Beispiel #1
0
        public void Initialize(int randomSeed, int inputNeuronCount,
                               int hiddenNeuronCount, int outputNeuronCount)
        {
            int    i, j;
            Random rand;

            // initializations
            rand          = new Random(randomSeed);
            m_inputLayer  = new NeuralLayer();
            m_outputLayer = new NeuralLayer();
            m_hiddenLayer = new NeuralLayer();

            for (i = 0; i < inputNeuronCount; i++)
            {
                m_inputLayer.Add(new Neuron(0));
            }

            for (i = 0; i < outputNeuronCount; i++)
            {
                m_outputLayer.Add(new Neuron(rand.NextDouble()));
            }

            for (i = 0; i < hiddenNeuronCount; i++)
            {
                m_hiddenLayer.Add(new Neuron(rand.NextDouble()));
            }

            // wire-up input layer to hidden layer
            for (i = 0; i < m_hiddenLayer.Count; i++)
            {
                for (j = 0; j < m_inputLayer.Count; j++)
                {
                    m_hiddenLayer[i].Input.Add(m_inputLayer[j],
                                               new NeuralFactor(rand.NextDouble()));
                }
            }

            // wire-up output layer to hidden layer
            for (i = 0; i < m_outputLayer.Count; i++)
            {
                for (j = 0; j < m_hiddenLayer.Count; j++)
                {
                    m_outputLayer[i].Input.Add(m_hiddenLayer[j],
                                               new NeuralFactor(rand.NextDouble()));
                }
            }
        }
Beispiel #2
0
        public void Initialize(int seed, int inputNeuronCount, int hiddenNeuronCount, int outputNeuronCount)
        {
            int          i, layerCount;
            Random       rnd;
            INeuralLayer layer;

            rnd           = new Random(seed);
            m_inputLayer  = new NeuralLayer();
            m_outputLayer = new NeuralLayer();
            m_hiddenLayer = new NeuralLayer();

            for (i = 0; i < inputNeuronCount; i++)
            {
                m_inputLayer.Add(new Neuron());
            }
            for (i = 0; i < outputNeuronCount; i++)
            {
                m_outputLayer.Add(new Neuron());
            }
            for (i = 0; i < hiddenNeuronCount; i++)
            {
                m_hiddenLayer.Add(new Neuron());
            }

            // input layer to hidden layer
            foreach (INeuron hiddenNeuron in m_hiddenLayer)
            {
                foreach (INeuron inputNeuron in m_inputLayer)
                {
                    hiddenNeuron.Input.Add(inputNeuron, new NeuralFactor(rnd.NextDouble()));
                }
            }
            // output neuron to hidden layer
            foreach (INeuron outputNeuron in m_outputLayer)
            {
                foreach (INeuron hiddenNeuron in m_hiddenLayer)
                {
                    outputNeuron.Input.Add(hiddenNeuron, new NeuralFactor(rnd.NextDouble()));
                }
            }
        }
        public void Initialize(int randomSeed)
        {
            var random = new Random(randomSeed);

            _inputLayer = new NeuralLayer {
                Name = "InputLayer"
            };
            _outputLayer = new NeuralLayer {
                Name = "OutputLayer"
            };
            _hiddenLayers = new List <INeuralLayer>();
            foreach (var hiddenLayer in NetConfiguration.HiddenLayerNodes)
            {
                _hiddenLayers.Add(new NeuralLayer {
                    Name = $"HiddenLayer{hiddenLayer.Key}"
                });
            }


            for (var i = 0; i < NetConfiguration.NrOfInputNeurons; i++)
            {
                _inputLayer.Add(new Neuron(0));
            }

            for (var i = 0; i < NetConfiguration.NumberOfOutputNeurons; i++)
            {
                _outputLayer.Add(new Neuron(random.NextDouble()));
            }

            _inputLayer.OutputLayer = _hiddenLayers.First();


            for (var i = 0; i < NetConfiguration.HiddenLayerNodes.Count; i++)
            {
                var nrOfNodesInLayer = NetConfiguration.HiddenLayerNodes.Values.ToArray()[i];
                for (var j = 0; j < nrOfNodesInLayer; j++)
                {
                    _hiddenLayers[i].Add(new Neuron(random.NextDouble()));
                }
            }

            // wire-up the hidden layers
            foreach (var hiddenLayer in _hiddenLayers)
            {
                var index = _hiddenLayers.IndexOf(hiddenLayer);
                hiddenLayer.InputLayer  = index == 0 ? _inputLayer : _hiddenLayers[index - 1];
                hiddenLayer.OutputLayer = index < _hiddenLayers.Count - 1 ? _hiddenLayers[index + 1] : _outputLayer;

                foreach (var hiddenNode in hiddenLayer)
                {
                    foreach (var inputNode in hiddenLayer.InputLayer)
                    {
                        hiddenNode.Input.Add(inputNode, new NeuralFactor(random.NextDouble()));
                    }
                }
            }

            _outputLayer.InputLayer = _hiddenLayers.Last();

            // wire-up output layer to hidden layer
            foreach (var outputNode in _outputLayer)
            {
                foreach (var hiddenNode in _outputLayer.InputLayer)
                {
                    outputNode.Input.Add(hiddenNode, new NeuralFactor(random.NextDouble()));
                }
            }
        }