예제 #1
0
        // Запуск работы сети, получение выходных данных
        public double[] RunNet()
        {
            double[] d_OutputData = null;
            // Выполнение операций последовательно для каждого слоя
            for (int i = 0; i < l_LayersNet.Length; i++)
            {
                // Умножение входного вектора на матрицу весов и запись результата в выходной вектор
                l_LayersNet[i].GetSetOutputVector = OperationsWithMatrix.MultipleVectorOnMatrix(l_LayersNet[i].GetSetInputVector, l_LayersNet[i].GetSetMatrixWeights);
                // Прогон выходного вектора через функцию активации
                OperationsWithMatrix.ActivationVector(l_LayersNet[i].GetSetOutputVector);
                // Если еще слой, то передача ему выходного вектора, иначе передача на выход
                if (i == l_LayersNet.Length - 1)
                {
                    d_OutputData = l_LayersNet[i].GetSetOutputVector;
                }
                else
                {
                    // Добавление смещения к вектору
                    l_LayersNet[i].GetSetOutputVector    = OperationsWithMatrix.AddOffsetVector(l_LayersNet[i].GetSetOutputVector);
                    l_LayersNet[i + 1].GetSetInputVector = l_LayersNet[i].GetSetOutputVector;
                }
            }

            return(d_OutputData);
        }
예제 #2
0
        // Получение нейросети из БЗ и заполнение матриц весов для каждого слоя
        public void GetDataNet()
        {
            // Получение слоев из БЗ
            l_LayersNet = GetLayersNet();
            // Просмотр слоев
            for (int i = 0; i < l_LayersNet.Length; i++)
            {
                // Получаем входы первого слоя
                if (i == 0)
                {
                    l_LayersNet[i].GetSetInputNodes = GetInputNodesNet(l_LayersNet[i].GetName);
                }
                // Входы для остальных слоев
                else
                {
                    l_LayersNet[i].GetSetInputNodes = GetInputNodesOtherLayers(l_LayersNet[i - 1].GetSetOutputNodes);
                }

                // Выходы слоя
                l_LayersNet[i].GetSetOutputNodes = GetOutputNodes(l_LayersNet[i].GetName);

                // Получение матрицы весов для каждого слоя
                l_LayersNet[i].GetSetMatrixWeights = OperationsWithMatrix.GetMatrixWeight(l_LayersNet[i].GetSetInputNodes, l_LayersNet[i].GetSetOutputNodes);
            }
        }