Ejemplo n.º 1
0
        private double trainOneEpochWithLogging(bool WriteToDataBase)
        {
            this.epoch++;
            double[] sumOfAbsoluteErrors = new double[outputLayer.getNeurons().Count()];
            double[] sumOfErrors         = new double[outputLayer.getNeurons().Count()];
            for (int i = 0; i < outputLayer.getNeurons().Count(); i++)
            {
                sumOfAbsoluteErrors[i] = 0f;
            }
            for (int i = 0; i < this.trainingsset.inputs.Length; i++)  //Loop over every input dataset
            {
                setInputs(this.trainingsset.inputs[i]);
                this.fire();
                calculateErrors(this.trainingsset.results[i]);
                this.asjustWeights();

                double[] betw = outputLayer.getAbsoluteErrors();

                sumOfAbsoluteErrors = sumOfAbsoluteErrors.Zip(betw, (x, y) => x + y).ToArray <double>();
            }
            sumOfAbsoluteErrors = sumOfAbsoluteErrors.Select(d => d / this.trainingsset.inputs.Length).ToArray <double>();// divide by the amount of trainings-inmputs, so we get the average error for every outputneuron
            if (WriteToDataBase)
            {
                DBHelper.HandleInsert(DatabaseID, sumOfAbsoluteErrors, epoch);
            }
            print(sumOfAbsoluteErrors);

            return(sumOfAbsoluteErrors.Sum());
        }