Ejemplo n.º 1
0
        public Layer(Layer lastLayer, uint countOfNeirons, IFuncOfActivation func) //Для последующих
        {
            for (int i = 0; i < countOfNeirons; i++)
            {
                neirons.Add(new Neiron(func));

                //Добавление весов в соответсвии с количеством нейронов на прошлом слое
                for (int k = 0; k < lastLayer.neirons.Count; k++)
                {
                    Random rand = new Random();
                    neirons[i].LastChangeWeight.Add(0);
                    neirons[i].WeightIn.Add(rand.NextDouble());
                }
            }
        }
Ejemplo n.º 2
0
        public Layer(uint countOfInputs, uint countOfNeirons, IFuncOfActivation func) //Для первого скрытого слоя
        {
            for (int i = 0; i < countOfNeirons; i++)
            {
                neirons.Add(new Neiron(func));

                //Добавление весов в соответствии с количеством входных данных
                for (int k = 0; k < countOfInputs; k++)
                {
                    Random rand = new Random();
                    neirons[i].LastChangeWeight.Add(0);
                    neirons[i].WeightIn.Add(rand.NextDouble());
                }
            }
        }
Ejemplo n.º 3
0
 //Сеть создается начиная со скрытых слоев
 /// <summary>
 /// Cписок функций активации(классы с функциями FuncOfActivation() и Deriative())
 /// 1.Линейная функция с утечкой: LeakyLinearUnit
 /// 2.Логистическая функция: Sigmoid
 /// 3.Гиперболический тангенс: Tangh
 /// </summary>
 public Network(IFuncOfActivation func, double learningRate, double momentum, params uint[] countOfNeironsOnLayers)
 {
     LearningRate = learningRate;
     Momentum     = momentum;
     Outputs      = new List <double>();
     layers.Add(new Layer(countOfNeironsOnLayers[0], countOfNeironsOnLayers[1], func)); //Нулевой слой - количество входных данных
     for (int i = 2; i < countOfNeironsOnLayers.Length; i++)
     {
         layers.Add(new Layer(layers[i - 2], countOfNeironsOnLayers[i], func));
     }
     for (int i = 0; i < layers[layers.Count - 1].neirons.Count; i++) //Добавление выходных данны последнего слоя
     {
         Outputs.Add(0);
     }
     CountOfLayers = countOfNeironsOnLayers.Length;
 }
Ejemplo n.º 4
0
 internal Neiron(IFuncOfActivation func)
 {
     this.func = func;
     Delta     = 0;
 }