public NeuralNetwork(IActivationFunction activationFunc, int layersQuantity, int neuronsPerLayer, Neuron bias = null) { if (ReferenceEquals(bias, null)) { InputNeurons = new NeuralLayer(neuronsPerLayer, activationFunc); NeuralLayer prevLayer = InputNeurons; HiddenLayers = new List<NeuralLayer>(layersQuantity); for (int i = 0; i < layersQuantity; i++) { HiddenLayers.Add(new NeuralLayer(neuronsPerLayer, activationFunc)); HiddenLayers[i].ConnectToMe(prevLayer); prevLayer = HiddenLayers[i]; } OutputNeurons = new NeuralLayer(neuronsPerLayer, activationFunc); OutputNeurons.ConnectToMe(prevLayer); } else { InputNeurons = new NeuralLayer(neuronsPerLayer, activationFunc); NeuralLayer prevLayer = InputNeurons; HiddenLayers = new List<NeuralLayer>(layersQuantity); for (int i = 0; i < layersQuantity; i++) { HiddenLayers.Add(new NeuralLayer(neuronsPerLayer, activationFunc)); HiddenLayers[i].ConnectToMe(prevLayer); HiddenLayers[i].ConnectToMe(bias); prevLayer = HiddenLayers[i]; } OutputNeurons = new NeuralLayer(neuronsPerLayer, activationFunc); OutputNeurons.ConnectToMe(prevLayer); OutputNeurons.ConnectToMe(bias); } }
public void ConnectToInput(Neuron input) { if (ReferenceEquals(input, null)) throw new ArgumentNullException(nameof(input)); In.Add(input, Helper.Rand.NextDouble); }
public void ConnectToMe(Neuron input) { if (ReferenceEquals(input, null)) throw new ArgumentNullException(nameof(input)); foreach (var item in Layer) { item.ConnectToInput(input); } }