static bool ConvLearning() { int width = 100; Random r = new Random(); Network network = new Network(); network.AddLayer(new Conv2D(new Relu(), 2, 1, 2)); network.AddLayer(new MaxPool2D(new Relu(), 2, 1)); network.AddLayer(new FullyConnLayar(new Relu(), new Size(1, 1, 1))); network.Compile(new Size(1, 1, width), true); double[,,] input = new double[width, width, width]; double[,,] t = new double[1, 1, 1]; for (int i = 0; i < width; i++) { input[i, i, i] = (double)r.NextDouble(); } t[0, 0, 0] = (double)r.NextDouble(); double start_error = network.GetError(input, t); double last_error = 0; SGD sgd = new SGD(network, 1e-1f); OneEnumerator one = new OneEnumerator(); one.input = input; one.output = t; for (int i = 0; i < 20; i++) { //last_error = network.Learn(input, t, 0.1f); last_error = sgd.TrainBatch(one, 1, 1)[0]; if (i % 4 == 0) { Console.WriteLine(last_error); } } return(start_error > last_error); }