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);
        }
Esempio n. 2
0
        // 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);
                }
            }
        }