Ejemplo n.º 1
0
 /// <summary>
 /// Tworzenie połączeń z neuronami warstwy poprzedniej i biasem a neuronem 
 /// z warstwy kolejnej
 /// </summary>
 /// <param name="prior">neurony wartwy poprzedniej</param>
 /// <param name="neuron">nuron z wartwy kolejnej</param>
 /// <param name="bias">bias, element progowy</param>
 /// <returns></returns>
 IEnumerable<Connection> GetNeuronConnections(FirstLayerElement[] prior, Neuron neuron, Bias bias)
 {
     foreach (FirstLayerElement link in prior)
         yield return new Connection(link, neuron);
     if (bias != null)
         yield return new Connection(bias, neuron);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Dokonuje pełnego połączenia dwóch wartw neuronów
 /// każdy z każdym
 /// </summary>
 /// <param name="prior">warstwa poprzednia</param>
 /// <param name="next">warstwa kolejna</param>
 /// <param name="bias">bias, element progowy sieci</param>
 public void Connect(FirstLayerElement[] prior, Neuron[] next, Bias bias)
 {
     // iterowanie neuronów warstwy kolejnej i wypełnianie pola previous
     foreach (Neuron neuron in next)
         neuron.PreviousLayer = GetNeuronConnections(prior, neuron, bias).ToArray();
     int idx = 0;
     // iterowanie warstwy poprzedniej
     foreach (FirstLayerElement link in prior)
         link.NextLayer = GetLinkConnections(idx++, next).ToArray();
     if (bias != null) {
         var biasConnections = GetBiasConnections(bias, next);
         if (bias.NextLayer == null)
             bias.NextLayer = new Connection[] { };
         bias.NextLayer = bias.NextLayer.Concat(biasConnections).ToArray();
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Pobiera połączenia z neuronów warstwy kolejnej do neuronu 
 /// warstwy poprzedniej
 /// </summary>
 /// <param name="index">indeks połączenia, neuronu warstwy poprzedniej</param>
 /// <param name="next">neurony wartwy kolejnej</param>
 /// <returns>Lista połączeń</returns>
 IEnumerable<Connection> GetLinkConnections(int index, Neuron[] next)
 {
     foreach (Neuron neuron in next)
         yield return neuron.PreviousLayer[index];
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Podłącza element progowy do warstwy neuronów
 /// </summary>
 /// <param name="bias">element progowy</param>
 /// <param name="next">neurony wartwy kolejnej</param>
 /// <returns>lista połączeń warstwy z elementem progowym</returns>
 IEnumerable<Connection> GetBiasConnections(Bias bias, Neuron[] next)
 {
     foreach (Neuron neuron in next)
         yield return neuron.PreviousLayer[neuron.PreviousLayer.Length - 1];
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="source">source neuron</param>
 /// <param name="destination">destination neuron</param>
 /// <param name="weight">weight of the connection</param>
 public Connection(FirstLayerElement source, Neuron destination, Weight weight)
 {
     this.Source = source;
     this.Destination = destination;
     this.Weight = weight;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="source">source neuron</param>
 /// <param name="destination">destination neuron</param>
 public Connection(FirstLayerElement source, Neuron destination)
     : this(source, destination, new Weight())
 {
 }