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; }
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); }
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); }