public Neuron(IEnumerable <Neuron> inputNeurons) : this() { foreach (var inputNeuron in inputNeurons) { var synapse = new Synapse(inputNeuron, this); inputNeuron.OutputSynapses.Add(synapse); InputSynapses.Add(synapse); } }
/// <summary> /// Initializes a new instance of the <see cref="Neuron"/> class. /// </summary> /// <param name="inputNeurons">The input neurons.</param> public Neuron(IEnumerable <Neuron> inputNeurons) : this() { Ensure.That(inputNeurons).IsNotNull(); foreach (var inputNeuron in inputNeurons) { var synapse = new Synapse(inputNeuron, this); inputNeuron?.OutputSynapses?.Add(synapse); InputSynapses?.Add(synapse); } }
public RedNeuronal(int Entradas, int CapasOcultas, int Salidas) { List <Synapse> sinapsis = new List <Synapse>(); var network = new Network(); var allNeurons = new List <Neuron>(); #region - Capas - //Input Layer for (int i = 0; i < Entradas; i++) { var neuron = new Neuron { Id = Guid.NewGuid(), Value = 0.0 }; network.InputLayer.Add(neuron); allNeurons.Add(neuron); } //Hidden Layers for (int i = 0; i < CapasOcultas; i++) { var neuron = new Neuron { Id = Guid.NewGuid(), Value = 0.0 }; network.HiddenLayer.Add(neuron); allNeurons.Add(neuron); } //Salidas for (int i = 0; i < Salidas; i++) { var neuron = new Neuron { Id = Guid.NewGuid(), Value = 0.0 }; network.OutputLayer.Add(neuron); allNeurons.Add(neuron); } #endregion //Synapses //Conexión capa de entrada y oculta for (int i = 0; i < network.InputLayer.Count; i++) { var neuronaCapaEntrada = network.InputLayer[i]; for (int j = 0; j < network.HiddenLayer.Count; j++) { // Cogemos cada neurona de la capa de entrada var synapse = new Synapse { Id = Guid.NewGuid() }; // Unimos con cada neurona de la cada oculta var neuronaCapaOculta = network.HiddenLayer[j]; synapse.InputNeuron = neuronaCapaEntrada; synapse.OutputNeuron = neuronaCapaOculta; synapse.Weight = 0f; neuronaCapaEntrada.OutputSynapses.Add(synapse); neuronaCapaOculta.InputSynapses.Add(synapse); sinapsis.Add(synapse); } } //Conexión capa oculta y la salida for (int i = 0; i < network.HiddenLayer.Count; i++) { var neuronaCapaOculta = network.HiddenLayer[i]; for (int j = 0; j < network.OutputLayer.Count; j++) { // Cogemos cada neurona de la capa de entrada var synapse = new Synapse { Id = Guid.NewGuid() }; // Unimos con cada neurona de la cada oculta var neuronaCapaSalida = network.OutputLayer[j]; synapse.InputNeuron = neuronaCapaOculta; synapse.OutputNeuron = neuronaCapaSalida; synapse.Weight = 0f; neuronaCapaOculta.OutputSynapses.Add(synapse); neuronaCapaSalida.InputSynapses.Add(synapse); sinapsis.Add(synapse); } } Red = network; Red.Conexiones = sinapsis; }