コード例 #1
0
ファイル: NeuralNetwork.cs プロジェクト: Nynu8/University
        public static void Train()
        {
            double[] inputs = { 3, 4 };
            double   result = 1;

            Neuron hiddenNeuron1 = new Neuron();
            Neuron hiddenNeuron2 = new Neuron();
            Neuron outputNeuron  = new Neuron();

            hiddenNeuron1.weights = new double[] { 0.12, 0.10 };
            hiddenNeuron2.weights = new double[] { 0.12, 0.08 };
            outputNeuron.weights  = new double[] { 0.14, 0.15 };

            hiddenNeuron1.inputs = new double[] { inputs[0], inputs[1] };
            hiddenNeuron2.inputs = new double[] { inputs[0], inputs[1] };


            for (int i = 0; i < 1000; i++)
            {
                outputNeuron.inputs = new double[] { hiddenNeuron1.Output, hiddenNeuron2.Output };

                Console.WriteLine($"Iteration: {i}: Expected output: {1}, network output: {outputNeuron.Output}");
                outputNeuron.error = Sigmoid.Derivative(outputNeuron.Output) * (result - outputNeuron.Output);
                outputNeuron.AdjustWeights();

                hiddenNeuron1.error = Sigmoid.Derivative(hiddenNeuron1.Output) * outputNeuron.error * outputNeuron.weights[0];
                hiddenNeuron2.error = Sigmoid.Derivative(hiddenNeuron2.Output) * outputNeuron.error * outputNeuron.weights[1];

                hiddenNeuron1.AdjustWeights();
                hiddenNeuron2.AdjustWeights();
            }
        }
コード例 #2
0
 private void AdjustWeights(double delta)
 {
     _output.AdjustWeights(delta);
     foreach (Neuron neuron in _hidden)
     {
         neuron.AdjustWeights(_output.ErrorFeedback(neuron));
     }
 }
コード例 #3
0
    void Train()
    {
        for (int i = 0; i < 4; i++)
        {
            H1.inputs = new float[] { dataInput[i, 0], dataInput[i, 1] };
            H1.inputs = new float[] { dataInput[i, 0], dataInput[i, 1] };

            OutputNeuron.inputs = new float[] { H1.output, H2.output };

            Debug.Log(dataInput[i, 0] + " xor " + dataInput[i, 1] + " = " + OutputNeuron.output);

            OutputNeuron.error = sigmoid.derivative(OutputNeuron.output) * (ExpectedResults[i] - OutputNeuron.output);
            OutputNeuron.AdjustWeights();

            H1.error = sigmoid.derivative(H1.output) * OutputNeuron.error * OutputNeuron.weights[0];
            H2.error = sigmoid.derivative(H2.output) * OutputNeuron.error * OutputNeuron.weights[1];
        }
        if (OutputNeuron.error == 0f)
        {
            Debug.LogWarning("SUCCESS!");
        }
    }