public void Train(int inputIndex, double[] inputs) { for (int i = 0; i < numNeurons; i++)//neuron { inputs[i] = 0.0; for (int j = 0; j < numLearnNeurons; j++)//weight { inputs[i] += inputData[inputIndex] * inputWeights[j, i]; } inputs[i] = Sigmoid.Func(inputs[i]); } outputData[inputIndex] = 0.0; for (int i = 0; i < numNeurons; i++) { outputData[inputIndex] += hiddenWeights[i] * inputs[i]; } }
public void Compute(double x) { double outpt; for (int i = 0; i < numNeurons; i++)//neuron { values[i] = 0.0; for (int j = 0; j < numLearnNeurons; j++)//weight { values[i] += x * inputWeights[j, i]; } values[i] = Sigmoid.Func(values[i]); } outpt = 0.0; for (int i = 0; i < numNeurons; i++) { outpt += hiddenWeights[i] * values[i]; } Console.WriteLine("input = " + x.ToString("0.0000") + " result = " + outpt + " error = " + Math.Abs(((Math.Sqrt(x) - outpt) / outpt) * 100).ToString("0.0000")); }
public void AdjustWeights(int inputIndex, double[] inputs) { for (int i = 0; i < numNeurons; i++) { hiddenWeights[i] -= (outputData[inputIndex] - expectedOutput[inputIndex]) * inputs[i] * learnRate; for (int j = 0; j < numLearnNeurons; j++) { inputWeights[j, i] -= (outputData[inputIndex] - expectedOutput[inputIndex]) * Sigmoid.Derivative(inputs[i]) * hiddenWeights[i] * outputData[inputIndex] * learnRate; } } }