private void InstanciateSteps()
{
inputLayer = new InputStep(32, 32);
FirstConvolutions = new ConvolutionStep[FirstConvolutionCount];
FirstSubsampling = new SubsamplingStep[FirstConvolutionCount];
for (int i = 0; i < FirstConvolutionCount; i++)
{
ConvolutionStep convolutionStep = new ConvolutionStep(inputLayer, FirstConvolutionSize);
FirstConvolutions[i] = convolutionStep;
FirstSubsampling[i] = new SubsamplingStep(convolutionStep, 2);
}
SecondConvolutions = new ConvolutionStep[SecondConvolutionCount];
SecondSubsampling = new SubsamplingStep[SecondConvolutionCount];
for (int i = 0; i < SecondConvolutionCount; i++)
{
RectangularStep[] inputs = FirstSubsampling.Where((item, upstreamIndex) => SecondConvolutionConnections[i, upstreamIndex]).ToArray();
ConvolutionStep convolutionStep = new ConvolutionStep(inputs, SecondConvolutionSize);
SecondConvolutions[i] = convolutionStep;
SecondSubsampling[i] = new SubsamplingStep(convolutionStep, 2);
}
Consolidation = new FeedForwardStep(120, SecondSubsampling);
Output = new FeedForwardStep(OutputFeedForwardNeurons, Consolidation);
Marking = new MarkingStep(Output, configuration);
}