public void SendSignals()
        {
            if (isSendSignals)
            {
                throw new Exception("This neuron has already send signals.");
            }

            foreach (Synapse synapse in synapses)
            {
                NeuronObj nextNeuron = synapse.NeuronObj;

                nextNeuron.AddInputData(this.GetOutputData() * synapse.Weight);
            }

            isSendSignals = true;
        }
Exemple #2
0
        public NeuralNetworkObj CreateWithRandomWeight(string name, int[] countNeuronsInLayer)
        {
            NeuralNetworkObj neuralNetworkObj = new NeuralNetworkObj(name);

            for (int layerId = 0; layerId < countNeuronsInLayer.Length; layerId++)
            {
                Layer layer = new Layer(layerId);
                if (layerId == 0)
                {
                    layer.SetPositionFirst();
                }
                else if (layerId == countNeuronsInLayer.Length - 1)
                {
                    layer.SetPositionLast();
                }

                for (int neuronId = 0; neuronId < countNeuronsInLayer[layerId]; neuronId++)
                {
                    NeuronObj neuronObj = new NeuronObj(neuronId);
                    layer.AddNeuron(neuronObj);
                }

                neuralNetworkObj.AddLayer(layer);
            }

            Random       rand   = new Random();
            List <Layer> layers = neuralNetworkObj.GetListLayers();

            for (int layerId = 0; layerId < layers.Count - 1; layerId++)
            {
                Layer layer     = layers[layerId];
                Layer nextLayer = layers[layerId + 1];

                foreach (NeuronObj neuron in layer.GetListNeurons())
                {
                    foreach (NeuronObj nextLayerNeuron in nextLayer.GetListNeurons())
                    {
                        double weight = Convert.ToDouble(rand.Next(-100, 100)) / 100;
                        neuron.AddSynapse(new Synapse(nextLayerNeuron, weight));
                    }
                }
            }

            return(neuralNetworkObj);
        }
Exemple #3
0
        public void AddNeuron(NeuronObj neuronObj)
        {
            if (GetNeuronById(neuronObj.Id) != null)
            {
                throw new Exception("Neuron with this id has already added.");
            }

            if (isFirst)
            {
                neuronObj.SetPositionInFirstLayer();
            }
            else if (isLast)
            {
                neuronObj.SetPositionInLastLayer();
            }

            neurons.Add(neuronObj);
        }