private void Getweights() // Выдает всем нейронам рандомные веса { for (int i = 1; i < layers.Count; i++) // Для каждого слоя { for (int j = 0; j < layers[i].size; j++) // Для каждого нейрона { for (int k = 0; k < layers[i - 1].size; k++) // Каждый вес скрытых нейронов { HiddenAndOutputNeuron hiddenNeuron = layers[i].neurons[j] as HiddenAndOutputNeuron; if (hiddenNeuron != null) { hiddenNeuron.Weights.Add(r.NextDouble() - 0.5); } else { throw new Exception("Неверное преобразование скрытого нейрона"); } } if (bias) // Добавляет вес для призрачных нейронов(нейронов смещения) { HiddenAndOutputNeuron bias = layers[i].neurons[j] as HiddenAndOutputNeuron; if (bias != null) { bias.Weights.Add(1); } else { throw new Exception("Неверное преобразование скрытого нейрона"); } } } } }
public Layer(int size, LayerType type, Topology topology) { neurons = new List <INeuron>(); this.size = size; switch (type) { case LayerType.Input: for (int i = 0; i < size; i++) { var neuron = new InputNeuron(topology); neurons.Add(neuron); } break; case LayerType.HiddenAndOutput: for (int i = 0; i < size; i++) { var neuron = new HiddenAndOutputNeuron(topology); neurons.Add(neuron); } break; } }