Beispiel #1
0
        internal BackPropagationNeuralNetwork(int[] networkShape, int epoch, float learnRate)
        {
            Epoch     = epoch;
            LearnRate = learnRate;
            Losses    = new float[epoch];
            for (int i = 0; i < epoch; i++)
            {
                Losses[i] = 0f;
            }

            LossFunction           = CrossEntropy;
            LossFunctionDerivative = CrossEntropyDerivative;

            Layers    = new FullyConnectedNeuralLayer[networkShape.Length];
            Layers[0] = new FullyConnectedNeuralLayer(networkShape[0], 0, this);
            for (int i = 1; i < networkShape.Length - 1; i++)
            {
                Layers[i] = new FullyConnectedNeuralLayer(networkShape[i], networkShape[i - 1], this);
            }
            Layers[Layers.Length - 1] = new FullyConnectedNeuralLayer(networkShape[Layers.Length - 1], networkShape[Layers.Length - 2], this);

            Layers[0].NextLayer = Layers[1];
            Layers[Layers.Length - 1].PreviousLayer = Layers[Layers.Length - 2];
            for (int i = 1; i < Layers.Length - 1; i++)
            {
                Layers[i].PreviousLayer = Layers[i - 1];
                Layers[i].NextLayer     = Layers[i + 1];
            }
        }
Beispiel #2
0
        internal void SetInput(float[,,] data, int instanceIndex, FullyConnectedNeuralLayer layer)
        {
            int sideLength = data.GetLength(1);

            for (int i = 0, r = 0, c = 0; i < layer.NumOfNodes; i++)
            {
                layer.Outputs[i] = data[instanceIndex, r, c];
                c++;
                if (c == sideLength)
                {
                    c = 0;
                    r++;
                }
            }
        }