public void AddEntry(TrainingSetEntry i_Entry) { bool checkInputSize = (m_Entries.Count > 0); if (checkInputSize) { if (i_Entry.inputCount != entryInputSize) { return; } } m_Entries.Add(i_Entry); }
// INTERNALS private void Train(ANN i_ANN, TrainingSet i_TrainingSet) { if (i_ANN == null || i_TrainingSet == null) { return; } if (i_ANN.ANNInputCount != i_TrainingSet.entryInputSize) { return; } for (int epoch = 0; epoch < m_EpochToTrain; ++epoch) { for (int trainingSetEntryIndex = 0; trainingSetEntryIndex < i_TrainingSet.entryCount; ++trainingSetEntryIndex) { TrainingSetEntry trainingSetEntry = i_TrainingSet.GetEntry(trainingSetEntryIndex); if (trainingSetEntry == null) { continue; } float[] inputs = new float[trainingSetEntry.inputCount]; for (int inputIndex = 0; inputIndex < inputs.Length; ++inputIndex) { inputs[inputIndex] = trainingSetEntry.GetInput(inputIndex); } float[] desiredOutputs = new float[trainingSetEntry.outputCount]; for (int outputIndex = 0; outputIndex < desiredOutputs.Length; ++outputIndex) { desiredOutputs[outputIndex] = trainingSetEntry.GetOutput(outputIndex); } float[] outputs; bool ANNRunSuccess = i_ANN.TryRun(inputs, out outputs); ANNFunctionLibrary.AdjustWeights(i_ANN, desiredOutputs); } } }