Esempio n. 1
0
 public Neuron(IEnumerable <Neuron> inputNeurons) : this()
 {
     foreach (var inputNeuron in inputNeurons)
     {
         var synapse = new Synapse(inputNeuron, this);
         inputNeuron.OutputSynapses.Add(synapse);
         InputSynapses.Add(synapse);
     }
 }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        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;
        }