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); }