public void oneStep(double x1, double x2, double Z) { //Set up input for hidden layer List <double> outPutHidden = new List <double> { 1 }; //{1 is for bias} for (int ne = 0; ne < 5; ne++) { if (listNeu[ne] != null) { listNeu[ne].inputs = new double[] { 1, x1, x2 }; outPutHidden.Add(listNeu[ne].output()); } else { outPutHidden.Add(0); } } //output Hidden is the input of the output layer listNeu[5].inputs = outPutHidden.ToArray(); double outPut = listNeu[5].output(); //Error listNeu[5].diff = Sigmoid.derivative(outPut) * (Z - outPut); // 5 ~ output neuron listNeu[5].adjustWeights(); for (int ne = 0; ne < 5; ne++) { if (listNeu[ne] != null) { listNeu[ne].diff = Sigmoid.derivative(outPutHidden[ne + 1]) * listNeu[5].diff * listNeu[5].weights[ne + 1]; listNeu[ne].adjustWeights(); } } //Error function (1/2 (output-targe)^2) lstErro.Add(Math.Pow((Z - outPut), 2) / 2); if (currentEpock == maxEpoch) { lstOutPut.Add(outPut); } }
public override double output() { outPut = Sigmoid.output(weights[0] + weights[1] * inputs[1] + weights[2] * inputs[2] + weights[3] * inputs[3] + weights[4] * inputs[4] + weights[5] * inputs[5]); return(outPut); }