Exemple #1
0
        public (NeuralNetworkVariable, NeuralNetworkVariable, NeuralNetworkVariable) Learn(float[] inputs)
        {
            for (int i = 0; i < inputCount; i++)
            {
                inputLayer[0, i] = inputs[i];
            }

            //make those values in range [-1,1]
            //inputLayer = inputLayer.PointwiseTanh();

            //compute hidden layers values
            hiddenLayers[0] = (inputLayer * weights[0] + bias[0]).PointwiseTanh();

            for (int i = 1; i < hiddenLayerCount; i++)
            {
                hiddenLayers[i] = (hiddenLayers[i - 1] * weights[i] + bias[i]).PointwiseTanh();
            }

            //compute output layer
            outputLayer = (hiddenLayers[hiddenLayerCount - 1] * weights[weights.Count - 1] + bias[bias.Count - 1]).PointwiseTanh();


            NeuralNetworkVariable n1 = new NeuralNetworkVariable(outputLayer[0, 0], NeuralNetworkVariable.VariableType.NegativeOneToPositiveOne);
            NeuralNetworkVariable n2 = new NeuralNetworkVariable(outputLayer[0, 1], NeuralNetworkVariable.VariableType.NegativeOneToPositiveOne);
            NeuralNetworkVariable n3 = new NeuralNetworkVariable(outputLayer[0, 2], NeuralNetworkVariable.VariableType.ZeroToPositiveOne);

            return(n1, n2, n3);
        }
Exemple #2
0
        public (NeuralNetworkVariable, NeuralNetworkVariable, NeuralNetworkVariable) Learn(float inp1, float inp2, float inp3)
        {
            inputLayer[0, 0] = inp1;
            inputLayer[0, 1] = inp2;
            inputLayer[0, 2] = inp3;
            inputLayer[0, 3] = inp3 - 4;
            inputLayer[0, 4] = inp3 * 7;
            inputLayer[0, 5] = inp3 / 5;
            inputLayer[0, 6] = inp3 - 2;
            inputLayer[0, 7] = inp3;
            inputLayer[0, 8] = inp3;
            //make those values in range [-1,1]
            inputLayer = inputLayer.PointwiseTanh();

            //compute hidden layers values
            hiddenLayers[0] = (inputLayer * weights[0] + bias[0]).PointwiseTanh();

            for (int i = 1; i < hiddenLayerCount; i++)
            {
                hiddenLayers[i] = (hiddenLayers[i - 1] * weights[i] + bias[i]).PointwiseTanh();
            }

            //compute output layer
            outputLayer = (hiddenLayers[hiddenLayerCount - 1] * weights[weights.Count - 1] + bias[bias.Count - 1]).PointwiseTanh();

            NeuralNetworkVariable n1 = new NeuralNetworkVariable(outputLayer[0, 0], NeuralNetworkVariable.VariableType.NegativeOneToPositiveOne);
            NeuralNetworkVariable n2 = new NeuralNetworkVariable(outputLayer[0, 1], NeuralNetworkVariable.VariableType.NegativeOneToPositiveOne);
            //NeuralNetworkVariable n3 = new NeuralNetworkVariable(Sigmoid(outputLayer[0, 2]), NeuralNetworkVariable.VariableType.ZeroToPositiveOne);
            NeuralNetworkVariable n3 = new NeuralNetworkVariable(outputLayer[0, 2], NeuralNetworkVariable.VariableType.ZeroToPositiveOne);

            return(n1, n2, n3);
        }