Example #1
0
        // передача сигналов от слоя layer к этому
        public void SetInputs(NeuralLayer layer)
        {
            double[] outputs = layer.GetOutputs();

            for (int i = 0; i < inputsSize; i++)
            {
                inputs[i] = outputs[i];
            }
        }
Example #2
0
        // получение массива ошибок относительно следующего слоя
        public double[] GetErrors(NeuralLayer nextLayer, double[] nextErrors)
        {
            double[] errors = new double[outputsSize];

            for (int i = 0; i < outputsSize; i++)
            {
                errors[i] = 0;

                for (int j = 0; j < nextErrors.Length; j++)
                {
                    errors[i] += nextErrors[j] * nextLayer.GetWeight(i, j);
                }
            }

            return(errors);
        }
Example #3
0
        public NeuralNetwork(int inputs, int outputs, int[] hiddenNeuronsSize, ActivationFunctionType hiddenActivation = ActivationFunctionType.sigmoid,
                             ActivationFunctionType outputActivation = ActivationFunctionType.noChange)
        {
            this.inputs            = inputs;
            this.outputs           = outputs;
            this.hiddenNeuronsSize = hiddenNeuronsSize;

            inputLayer = new NeuralLayer(inputs, inputs, NeuralLayerType.input, ActivationFunctionType.noChange);

            hiddenLayers    = new NeuralLayer[hiddenNeuronsSize.Length];
            hiddenLayers[0] = new NeuralLayer(inputs, hiddenNeuronsSize[0], NeuralLayerType.hidden, hiddenActivation);

            for (int i = 1; i < hiddenNeuronsSize.Length; i++)
            {
                hiddenLayers[i] = new NeuralLayer(hiddenNeuronsSize[i - 1], hiddenNeuronsSize[i], NeuralLayerType.hidden, hiddenActivation);
            }

            outputLayer = new NeuralLayer(hiddenNeuronsSize[hiddenNeuronsSize.Length - 1], outputs, NeuralLayerType.output, outputActivation);
        }