《深度学习:卷积神经网络从入门到精通》——3.5 LeNet的手写数字识别案例
3.5 LeNet的手写数字识别案例
本节将描述一个利用LeNet对手写数字进行识别的案例,其中用到的MNIST数据集可以根据表1.2提供的地址下载。这个数据集需要利用方框3.2的create_mnist.bat文件转化为特殊的Caffe格式LEVELDB,然后分别存放到训练文件夹mnist-train-leveldb和测试文件夹mnist-test-leveldb。为了利用LeNet进行手写数字识别,还需要在lenet_train_test.prototxt和lenet_solver.prototxt文件中根据表3.5和表3.6设置各个参数的值。
方框3.2 文件create_mnist.bat的内容
rd /s /q mnist_train_leveldb
rd /s /q mnist_test_leveldb
convert_mnist_data.exe data/train-images.idx3-ubyte data/train-labels.idx1-ubyte mnist_train_leveldb --backend=leveldb
convert_mnist_data.exe data/t10k-images.idx3-ubyte data/t10k-labels.idx1-ubyte mnist_test_leveldb --backend=leveldb
Pause
表3.5 手写数字识别案例在lenet_train_test.prototxt文件中设置的参数值
表3.6 手写数字识别案例在lenet_solver.prototxt文件中设置的超参数值
设置好参数后,参照图3.3,在命令行窗口中输入有关命令,按回车键,程序开始运行。程序运行后,将依次出现一系列信息窗口界面,如图3.4~图3.7所示。
图3.3 手写数字识别案例的运行命令
图3.4 手写数字识别案例运行后显示的网络结构信息
图3.4显示的网络结构信息其实就是对文件lenet_train_test.prototxt的加载过程,而图3.5显示的则是网络各层的详细创建过程。在创建完成后,就开始根据文件lenet_solver.prototxt中设置的参数对网络权值和偏置进行训练,由于solver_mode选为CPU,所以训练过程仅采用CPU,不使用GPU。图3.6显示的是在训练网络的过程中,随着迭代次数的增加,学习率、训练损失和测试损失、训练准确率和测试准确率的变化。在本案例中,每迭代100次显示一次训练情况,每迭代500次显示一次测试情况,总共训练10?000次。训练完成时的最终结果如图3.7所示,训练损失函数值为0.007?162?71,测试损失函数值为0.026?721?2,测试准确率为99.17%。
图3.5 手写数字识别案例运行后显示的网络结构各层详细信息
图3.6 手写数字识别案例运行后显示的训练和测试信息
图3.7 手写数字识别案例训练完成时的最终结果
- 点赞
- 收藏
- 关注作者
评论(0)