其实这个和cifar的实例基本相同,只不过数据转换的方法不一样
【说明,此博客按照我自己的路径设置的相关操作,读者如果自行选择其他路径,记得在bat和prototxt等文件修改路径】
第一步
下载数据集THE MNIST DATABASE of handwritten digits官方网址:http://yann.lecun.com/exdb/mnist/
为了避免部分人下载速度缓慢或者打不开网址,这个上传了百度云:链接:http://pan.baidu.com/s/1c2kHfgO 密码:ffr7
下载以后放到如下路径,并解压,操作完毕的文件如下,这个文件夹应该是在Linux下调用sh命令下载数据的地方,我们直接放到这里面:
【这里自己把解压后的文件重新命名一下,原始解压后的文件是"."而不是"-"】
第二步
数据格式的转换,依旧是转换为leveldb,不过和cifar的转换方法不同
按照上图,在对应路径下新建一个bat文件,内容如下:
set DATA=../../data/mnist
set TOOLS=../../Build/x64/ReleaseREM set BACKEND=lmdb
set BACKEND=leveldbecho "Creating %BACKEND%..."rd /s /q "mnist_train_%BACKEND%"
rd /s /q "mnist_test_%BACKEND%""%TOOLS%/convert_mnist_data.exe" %DATA%/train-images-idx3-ubyte %DATA%/train-labels-idx1-ubyte mnist_train_%BACKEND% --backend=%BACKEND%
"%TOOLS%/convert_mnist_data.exe" %DATA%/t10k-images-idx3-ubyte %DATA%/t10k-labels-idx1-ubyte mnist_test_%BACKEND% --backend=%BACKEND%echo "Done."pause
运行以后就会多出上图的两个文件夹。
【更新日志2017-9-15】这一步很多人不会, 那就提供一个简单点的转换方法
转换测试集:
..\..\Build\x64\Release\convert_mnist_data.exe train-images-idx3-ubyte train-labels-idx1-ubyte train_leveldb -backend=leveldb
pause
转换训练集:
..\..\Build\x64\Release\convert_mnist_data.exe train-images-idx3-ubyte train-labels-idx1-ubyte train_leveldb -backend=leveldb
pause
第三步
【注意】可以发现cifar在这里还计算过均值
修改prototxt文件,依旧是老地方,leveldb的路径问题
第四步
【注意】如果你用的是CPU,记得修改lenet_solver.prototxt里面最后一行为CPU
直接开始训练了,同样新建bat文件,路径和内容如下:
bat 的内容如下:
.\Build\x64\Release\caffe.exe train --solver=examples/mnist/lenet_solver.prototxt
pause
第五步
得到结果模型
.