《深度学习:卷积神经网络从入门到精通》——3.5 LeNet的手写数字识别案例

举报
华章计算机 发表于 2019/06/06 08:58:33 2019/06/06
【摘要】 本书摘自《深度学习:卷积神经网络从入门到精通》——书中第3章,第3.5节,作者是李玉鑑、张婷、单传辉、刘兆英等。

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文件中设置的参数值

image.png

表3.6 手写数字识别案例在lenet_solver.prototxt文件中设置的超参数值

image.png


设置好参数后,参照图3.3,在命令行窗口中输入有关命令,按回车键,程序开始运行。程序运行后,将依次出现一系列信息窗口界面,如图3.4~图3.7所示。


image.png

图3.3 手写数字识别案例的运行命令

image.png

图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%。

image.png

图3.5 手写数字识别案例运行后显示的网络结构各层详细信息

image.png

图3.6 手写数字识别案例运行后显示的训练和测试信息

image.png

图3.7 手写数字识别案例训练完成时的最终结果


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。