public override NeuronLayer CreateInputLayer(int countNeurons) { //if (inputSignal.Count == countNeurons) //{ NeuronLayer layer = new NeuronLayer(); for (int i = 0; i < countNeurons; i++) { Synapse synapse = new Synapse(); Neuron neuron = new Neuron(new LinearFunction()); //synapse.SetSignal(inputSignal[i]); synapse.SetWeight(1); neuron.SetShift(0); synapse.SetParentNeurons(null, neuron); neuron.AddInput(synapse); layer.AddNeuron(neuron); } network.SetInputLayer(layer); return layer; //} //else //{ // MessageBox.Show("lol ... countNeurons не равно signal.Count"); // return null; //} }
/// <summary> /// соединяет текущий нейрон с нейроном переданным в качестве параметра /// </summary> public void ConnectNeuron(Neuron neuron) { Synapse newSynapse = new Synapse(); newSynapse.SetParentNeurons(this, neuron); outputs.Add(newSynapse); neuron.inputs.Add(newSynapse); }
public override NeuronLayer AddHiddenLayer(int countNeurons) { NeuronLayer layer = new NeuronLayer(); for (int i=0; i<countNeurons; i++) { Neuron newNeuron = new Neuron(new SigmoidFunction()); layer.AddNeuron(newNeuron); } network.AddHiddenLayer(layer); return layer; }
public override NeuronLayer CreateOutputLayer(int countNeurons) { NeuronLayer layer = new NeuronLayer(); for (int i = 0; i < countNeurons; i++) { Neuron neuron = new Neuron(new SigmoidFunction()); Synapse synapse = new Synapse(); synapse.SetWeight(1); synapse.SetParentNeurons(neuron, null); neuron.AddOutput(synapse); layer.AddNeuron(neuron); } network.SetOutputLayer(layer); return layer; }
// задать нейроны, к которым присоединяется синапс public void SetParentNeurons(Neuron left, Neuron right) { leftNeuron = left; rightNeuron = right; }
// добавляет в слой список нейронов //public void AddNeurons(List<Neuron> neurons) //{ // this.neurons = neurons; //} // добавляет в слой один нейрон public void AddNeuron(Neuron neuron) { neurons.Add(neuron); }