static void Main() { Helper.PrintLine(@"神经网络和深度学习-手写数字识别:"); Helper.PrintLine("检查数据文件..."); if (!CheckDataFiles()) { Exit(); } Helper.PrintLine("创建神经网络..."); var network = new Network <SigmoidNeuron>(new[] { 784, 15, 10 }); Helper.PrintLine("读取训练数据..."); IDataReader reader = new IDXReader(); var trainImages = reader.ReadMatrixsFlattened(TrainImagesPath).ToArray(); var trainLabels = reader.ReadValues(TrainLabelsPath).Select(value => { var values = Enumerable.Repeat <double>(0.0, 10).Cast <double>().ToArray(); values[value] = 1; return(values); }).ToArray(); Stopwatch stopwatch = new Stopwatch(); Helper.PrintLine("随机梯度下降算法训练神经网络..."); Helper.PrintSplit(); stopwatch.Start(); network.StochasticGradientDescent( trainImages.Zip(trainLabels), 3, // 30 10, 3.0); stopwatch.Stop(); Helper.PrintSplit(); Helper.PrintLine($"神经网络训练结束,耗时:{stopwatch.Elapsed.ToString()}"); Exit(); }
public Form1() { InitializeComponent(); data = IDXReader.ReadData(Directory.GetCurrentDirectory() + "..\\..\\..\\train-images.idx3-ubyte", Directory.GetCurrentDirectory() + "..\\..\\..\\train-labels.idx1-ubyte"); nn.InitializeWeights(); }