예제 #1
0
        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("Неверное преобразование скрытого нейрона");
                        }
                    }
                }
            }
        }
예제 #2
0
        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;
            }
        }