Пример #1
0
        public void SetRateMSE(float[][] inputs, float[][] answers)
        {
            Base.Parallel.ParallelFor(0, PopulationCount, (int i) =>
            {
                PopulationUnit unit = GetPopulationUnit(i);

                float TotalMse = 0;

                for (int testDataCounter = 0; testDataCounter < inputs.Length; testDataCounter++)
                {
                    float[] NNOut = unit.NNRun(inputs[testDataCounter]); // получаем выходы нс

                    float MSE = 0;

                    for (int k = 0; k < NNOut.Length; k++)
                    {
                        MSE += (float)Math.Pow(answers[testDataCounter][k] - NNOut[k], 2); //подсчитываем сумму ошибок
                    }

                    MSE       = MSE / NNOut.Length; // делим
                    TotalMse += MSE;
                }

                TotalMse /= answers.Length;

                unit.Rate = TotalMse;
            });
        }