Esempio n. 1
0
        public void PropagateValuesForward(List <double> networkInputsData = null, int firstLayerNoToChangeInputs = 1)
        {
            if (networkInputsData == null)
            {
                networkInputsData = Topology.NetworkInputValues();
            }

            #region First layer
            Layer firstLayer = Topology.Layers.First();
            firstLayer.SetInputsDataAndOutputsForFirstLayer(networkInputsData);
            #endregion

            #region Next layers
            for (int layerNo = firstLayerNoToChangeInputs; layerNo < Topology.Layers.Count; layerNo++)
            {
                Layer currentLayer  = Topology.Layers.ElementAt(layerNo);
                Layer previousLayer = Topology.Layers.ElementAt(layerNo - 1);

                // Each neuron in current layer gets data from all neurons from previous layers and multiples it by his weight
                for (int neuronNo = 0; neuronNo < currentLayer.Neurons.Count; neuronNo++)
                {
                    Neuron neuron = currentLayer.Neurons.ElementAt(neuronNo);

                    // setting input values for neuron
                    for (int inputNo = 0; inputNo < neuron.Inputs.Count; inputNo++)
                    {
                        neuron.Inputs.ElementAt(inputNo).Value = previousLayer.Neurons.ElementAt(inputNo).GetOutputValue();
                    }

                    // let's neuron to count his output
                    neuron.CountOutput();
                }
            }
            #endregion
        }
Esempio n. 2
0
 public void SetInputsDataAndOutputsForFirstLayer(List <double> inputsDataForFirstLayer)
 {
     for (int neuronNo = 0; neuronNo < Neurons.Count; neuronNo++)
     {
         Neuron neuron = Neurons.ElementAt(neuronNo);
         neuron.Inputs.ElementAt(0).Value = inputsDataForFirstLayer.ElementAt(neuronNo);
         neuron.CountOutput();
     }
 }