예제 #1
0
        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();
        }
예제 #2
0
 public Form1()
 {
     InitializeComponent();
     data = IDXReader.ReadData(Directory.GetCurrentDirectory() + "..\\..\\..\\train-images.idx3-ubyte", Directory.GetCurrentDirectory() + "..\\..\\..\\train-labels.idx1-ubyte");
     nn.InitializeWeights();
 }