public TrainingResults Train(DataSetItem inputs)
{
PropogateForward(inputs);
Marking.CorrectClass = Array.IndexOf(configuration.Characters, inputs.Character);
Array.ForEach(reverseSteps, step => step.PropogateBackwards());
int correctOutputIndex = Array.IndexOf(configuration.Characters, inputs.Character);
return new TrainingResults(Marking.Output, correctOutputIndex);
}