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); }
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); }