private IList <Result> TrainWithSet(ITrainingEntry trainingEntry)
        {
            var trainingResultForEntry = new List <IList <double> > {
                trainingEntry.Inputs
            };
            var j = 0;

            foreach (var layer in this.Layers)
            {
                var trainingData    = trainingResultForEntry[j];
                var resultsForLayer = layer.Train(trainingData, ActivationFunction);
                trainingResultForEntry.Add(resultsForLayer);
                j++;
            }

            var resultValues = trainingResultForEntry.Last();
            var resultErrors = trainingEntry.CalculateError(resultValues);
            var results      = new List <Result>();

            for (var i = 0; i < trainingEntry.Labels.Count; i++)
            {
                var result = new Result(resultValues[i], resultErrors[i]);
                results.Add(result);
            }

            return(results);
        }
 private void PresentFooterForSet(IList <Result> results, ITrainingEntry trainingEntry)
 {
     Console.WriteLine("- set completed");
     for (var i = 0; i < this.OutputLabels.Count(); i++)
     {
         Console.WriteLine(
             $"{this.OutputLabels[i]}: {results[i].Value.ToNonEString()} with error {results[i].Error.ToNonEString()}");
     }
 }
        private void PresentHeaderForSet(ITrainingEntry trainingEntry)
        {
            Console.WriteLine("- Start set");
            for (var i = 0; i < this.InputLabels.Count(); i++)
            {
                Console.WriteLine($"\t{this.InputLabels[i]}: {trainingEntry.Inputs[i]}");
            }

            Console.WriteLine($"\tExpected: {trainingEntry.Labels[0]}");
        }