Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
 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);
 }