又是调试了一番,才完成了hello world级别的实例操作----mnist实例。这个例子大多是用来测试caffe是否可用的吧。但是就是这么简单的东西,小新也忙活折腾了好几天,原谅我的智商吧。
这次小新也有参考其他厉害的博主的博文,比如这个,http://www.cnblogs.com/NanShan2016/p/5469942.html 小新后面的操作基本都是按照这个完成的,好感谢博主啊!这里就仅仅是一个记录吧。
首先,21天这本书里基本操作是用的ios系统,ios基本操作和linux很接近,所以里面有的操作不一定是适用windows平台的,比如在linux可以直接运行get_mnist.sh脚本获得mnist数据集,但是在Windows里,.sh脚本是没法运行的,小新是自己下载的压缩包解压的。也有一种方法是写将.sh脚本改写为.bat脚本,这样可以在windows运行,但小新没有尝试过这么做。下载完后有四个压缩包:
解压后为:
这个原始数据集是二进制文件,是不能直接被caffe识别的,需要转换为LEVELDB或者LMDB,小新这里用的是LMDB。
1.数据转换
数据转换小新走了好多弯路,真的是不忍回首啊。还记得当时生成解决方案的时候,下载的依赖包吗?这会就是依赖包派上用场的时候了。依赖包有自动编译的还有人自己编译的,目前小新也不知道这两者有什么差别,为什么 21天 里说要首选自己编译的。小新试过自己编译啊,编译到LMDB真的是花了我很长时间也没成功,我也不知道为什么,不像说的那样直接编译就好了。。。所以这个以后再说吧,以后自己编译的机会很大。
我在博客上又看到一篇教程:http://blog.csdn.net/zb1165048017/article/details/52250802 ,转换数据基本就是按照这么来的,成功了。
(1)确保四个数据文件放入自己所安装的caffe文件夹下的example文件夹中,我的路径是F:\caffe\caffe-master\examples\mnist ,在里面新建文件夹mnist,把四个数据都放进去。
(2)打开cmd命令行,进入到F:\caffe\caffe-master\examples\mnist文件夹中,运行在begug中的exe文件,此时路径一定要正确,一定要是完全成功的那个caffe.exe所在的地址,不然会出现这样子的错误:
因为我编译caffe也弄了好几次才成功,所以完全编译成功的解决方案的路径是在F盘的,所以正确的应该是这个样子的:
小新没有出现什么内存的问题,算不算是幸运?运行结束后,会出现文件夹,文件夹里有两个文件
这两个文件夹的名字就是之前cmd命令行里命名的,这两个文件夹是生成的,里面的文件都是这样子的:
这样子,数据转换工作就是成功了。下面进行训练。
2.训练,运行exe
这里就是参考了小新这篇博文开头给的地址的那篇博文,真的是炒鸡感谢啊!!再贴一次:http://www.cnblogs.com/NanShan2016/p/5469942.html 但是小新在刚开始试的时候,看第二种方法步骤少,就使用了第二种,不过在最后一步运行脚本的时候,总是会失败,报错如图:
电脑说要确保lenet这个文件夹是存在并且可以写入的,但是win7的文件夹是只读的,怎么都改不了,我在网上搜搜好像是说win7的文件夹是默认只读的,是修改不了的,我的春秋大梦啊就此破灭。也许其他人用的是win8啊win10啊更高级的系统的,所以小新在此不建议win7用户使用第二种方法啊,都是泪啊有木有!!所以我就试了第一种方法,建议win7妹子们用这个啊!小新写的粗,凑活记录一下。
(1)在caffe.exe所在的文件夹新建一个example2文件夹,把所有用的东西,比如lmdb数据集和lenet_train_test.prototxt和lenet_solver.prototxt都放进去。
(2)将lenet_train_test.prototxt和lenet_solver.prototxt都改成自己的地址:
这里改的是绝对路径,没有GPU就改成了CPU。
(3)接下来是写.bat文件,将trainlenet.sh文件复制到caffe.exe所在的文件夹里,.sh文件是linux里的,所以我们要把它改写为.bat文件。内容如下:
因为train_lenet.bat文件就在.exe目录下,写相对地址也是可以的,保存
(4)双击运行.bat文件,不再有错误了,出来
机子比较老,等了半个多小时才出来结果,结果是这样的:
且有文件生成:
至此,训练完成了。