public void Process() { Console.WriteLine("Please wait, reading MNIST training data."); var dir = AppDomain.CurrentDomain.BaseDirectory; var trainingReader = LearnDigitsBackprop.LoadMNIST(dir, true, MNIST_DEPTH); var validationReader = LearnDigitsBackprop.LoadMNIST(dir, false, MNIST_DEPTH); Console.WriteLine("Training set size: " + trainingReader.NumImages); Console.WriteLine("Validation set size: " + validationReader.NumImages); var inputCount = trainingReader.Data[0].Input.Length; var outputCount = trainingReader.Data[0].Ideal.Length; var network = new BasicNetwork(); network.AddLayer(new BasicLayer(null, true, inputCount)); network.AddLayer(new BasicLayer(new ActivationReLU(), true, 100)); network.AddLayer(new DropoutLayer(new ActivationReLU(), true, 50, 0.5)); network.AddLayer(new BasicLayer(new ActivationReLU(), true, 25)); network.AddLayer(new BasicLayer(new ActivationSoftMax(), false, outputCount)); network.FinalizeStructure(); network.Reset(); // train the neural network Console.WriteLine("Training neural network."); var train = new BackPropagation(network, trainingReader.Data, 1e-4, 0.9); train.L1 = 0; train.L2 = 1e-11; PerformIterationsClassifyEarlyStop(train, network, validationReader.Data, 5); }
/// <summary> /// The entry point for this example. If you would like to make this example /// stand alone, then add to its own project and rename to Main. /// </summary> /// <param name="args">Not used.</param> public static void ExampleMain(string[] args) { var prg = new LearnDigitsBackprop(); prg.Process(); }