学习笔记03·修正caffe环境配置并运…

     在此之前我又看了几篇关于caffe配置环境的博客:

http://www.cnblogs.com/cxyxbk/p/5902034.html
 http://blog.csdn.net/qq_14845119/article/details/52415090

http://blog.csdn.net/muyouhang/article/details/50688038

      每次看到csdn的大神发各种神奇的博客,都好佩服,自己都不好意思去注册个csdn,就在这里注册一个为人问津的写写学习笔记,方便自己后期来监督查看自己。

    看完之后发现自己上一篇博文里配置caffe环境的时候存在一些缺陷,这里进行一些修正。

 1、在点击D:\Caffe\caffe-master\windows该目录下的Caffe.sln用VS2013打开。这里由于别的模块用到了libcaffe,所以,首先选择libcaffe,右键生成。成功之后,再选择整个解决方案,右键生成解决方案。

学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别

2、右键解决方案->属性->通用属性->启动项目->当前选定内容,然后保存。

学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别

3、点击caffe->caffe.cpp,按F5运行,生成如下界面,证明安装成功。同时在根目录下面会生成相应的exe,lib,dll等文件。

学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别接下来进入正文:

 (1)刚一开始就一头雾水了,书中说,执行脚本D:\Caffe\caffe-master\data\mnist,来下载mnist数据集,但是在win7系统cmd中不知道该怎么运行shell脚本,百度了一下,说需要安装git,于是下载https://git-scm.com/download/win安装: 学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别        安装完毕,双击“get_mnist.sh”运行界面一闪而过,仔细看了运行结果,应该是没有下载成功,突然想到了,linux下使用命令下载东西的,windows下可以直接浏览器输网址下载啊,这就是作为一个小白的悲哀啊,也许过几个月后再回头来看这些问题,会被自己的愚蠢笑哭的,于是输入了网址http://yann.lecun.com/exdb/mnist,下载:

学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别(2)下载完毕得到4个文件,解压。
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别下载完毕这四个文件分别放在哪里呢?看看D:\Caffe\caffe-master\examples\mnist\create_mnist.sh这个文件内容:DATA=data/mnist,原来是下载到了  D:\Caffe\caffe-master\data\mnist这个目录里,也就是“get_mnist.sh”所在的文件夹。 
打开git。cd到caffe的根目录,执行命令 ./examples/mnist/create_mnist.sh
运行结果:
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别
Creating lmdb...
./examples/mnist/create_mnist.sh: line 17: build/examples/mnist/convert_mnist_data.bin: No such file or directory
没有找到目录。
(3)保险起见,先把create_mnist.sh备份一下,打开文件修改其内容:这也是经过了很多次尝试才知道是这样修改的:
  学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别如果说有如下错误,那就是因为你没有将上图中的“-”改为“.”这应该是linux和windows下的文件名不一致造成的F0330 15:27:41.177140  4520 convert_mnist_data.cpp:53] Check failed: image_file Unable to open file data/mnist/train-images-idx3-ubyte
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别这样在此执行, cd 切换到d:\ Caffe/caffe-master/目录。执行./examples/mnist/create_mnist.sh就得到了激动人心的画面: 学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别并且在D:\Caffe\caffe-master\examples\mnist目录下自动生成了两个文件夹:
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别如此,这个就算是将下载到的4个二进制文件,转化为了LEVELDB和LMDB格式。
(4)当然还有另外一种办法,就是 在caffe根目录下,新建一个create_mnist.bat,里面写入如下的脚本:
.\Build\x64\Release\convert_mnist_data.exe .\data\mnist\train-images.idx3-ubyte .\data\mnist\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb   
echo.   
.\Build\x64\Release\convert_mnist_data.exe .\data\mnist\t10k-images.idx3-ubyte    .\data\mnist\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb 
pause
但是其中这个地址要改成你自己的实际地址
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别同样也可以达到相同的效果。
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别(5) 接下来就是进行 训练了,但是在此之前要,确认修改D:\Caffe\caffe-master\examples\mnist\lenet_solver.prototxt,将最后一行改为solver_mode:CPU,上一篇博文已经进行了修改这里就跳过该步骤。
(6)开始训练,在git中输入如下内容,(这里我们第一次使用了caffe工具的train命令)
./Build/x64/Release/caffe.exe train -solver examples/mnist/lenet_solver.prototxt
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别貌似是开始训练了,不知道要等多久,拭目以待吧,这里想吐槽一下,git里面目录地址中用的是“/”而windows中用的是“\”太不人性化了,就不能统一一下吗。。。
当然也可以将D:\Caffe\caffe-master\examples\mnist\train_lenet.sh文件进行修改然后执行它也是可以的
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别将其中的目录地址改为自己的真实地址,这样同样能达到效果,笔者这里就没有尝试了,毕竟这个脚本里也就只有一句话。
(7)训练结束,经过大约10多分钟,训练结束,并且在D:\Caffe\caffe-master\examples\mnist下生产了新的4个文件: 学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别(8)理解过程,照着样子,是完整的跑完一遍,但具体为什么这么做,还是不明白啊,那就翻翻书,查查网络资料,好好理解一下吧。
这里摘录一个网页的内容 http://www.2cto.com/kf/201611/561111.html是对LeNet模型的理解
现在,我们来具体看一下lenet_train_test.prototxt这个文件的具体内容:
/
layer {                                                       
  name: "mnist"                                        //[1]数据层的名字为--mnist
  type: "Data"                                          //[2]层的层类型:Data(数据层)(数据库作为输入)
  top: "data"                                            //[3]数据层的输出blob有两个:data,label(对应生成的CNN图看)
  top: "label"                                       
  include {                                                //[4]include里面的数据说明,该层只在训练阶段有效
      phase: TRAIN
  }
  transform_param {                                //[5]数据预处理,转换参数的定义
      scale: 0.00390625                          //[5]特征归一化系数,将范围为[0,255]的MNIST数据归一化为[0,1]
  }
  data_param {                                          //[6]数据层的参数
      source: "examples/mnist/mnist_train_lmdb"//[1]由于该数据层的数据来源是数据库(由层类型Data指定),
                                                                                        //    因此,source对应的就是数据库LMDB的路径,也就是训练
                                                                                        //    数据和测试数据的path
      batch_size: 64                                                    //[2]批量数目,表示caffe一次从数据库LMDB读入的图片的数量
      backend: LMDB                                                      //[3]数据库的类型说明区别于LevelDB数据库
  }
}

layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
      phase: TEST
  }
  transform_param {
      scale: 0.00390625
  }
  data_param {
      source: "examples/mnist/mnist_test_lmdb"
      batch_size: 100
      backend: LMDB
  }
}

layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"                                      //[1]卷积层的输入blob为data
  top: "conv1"                                          //[2]卷积层的输出blob为conv1
  param {                                                    //[3]卷积层的:权值学习速率倍乘因子,1表示,保持与全局参数一致
      lr_mult: 1
  }
  param {                                                    //[4]卷积层的:偏置项的学习速率倍乘因子,是全局参数的2倍
      lr_mult: 2
  }
  convolution_param {                            //[5]卷积层的计算参数
      num_output: 20                                                //[1]输出feature map的数目为20,对应的也就是卷积核的数量
      kernel_size: 5                                                //[2]卷积核的尺寸为:5*5
      stride: 1                                                          //[3]卷积核在输入图片上滑动的步长为:1
      weight_filler {                                //[6]指定权值的初始化方案为:xavier
          type: "xavier"
      }
      bias_filler {                                    //[7]偏执项的初始化方案为:constant,默认为0
          type: "constant"
      }
  }
}

layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {                                  //[1]池化层(下采样)的参数
      pool: MAX                                                      //[1]目前提供了三种池化的方法:最大值池化,均值池化,随机池化
                                                                                //      很明显,该池化层使用了最大值池化MAX
      kernel_size: 2                                            //[2]指定池化窗口的宽度和高度:2*2
      stride: 2                                                      //[3]指定池化窗口在输入数据上滑动的步长为:2
  }
}

layer {
  name: "conv2"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2"
  param {
      lr_mult: 1
  }
  param {
      lr_mult: 2
  }
  convolution_param {
      num_output: 50
      kernel_size: 5
      stride: 1
      weight_filler {
          type: "xavier"
      }
      bias_filler {
          type: "constant"
      }
  }
}

layer {
  name: "pool2"
  type: "Pooling"
  bottom: "conv2"
  top: "pool2"
  pooling_param {
      pool: MAX
      kernel_size: 2
      stride: 2
  }
}

layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "pool2"
  top: "ip1"
  param {
      lr_mult: 1
  }
  param {
      lr_mult: 2
  }
  inner_product_param {            //[1]全连接层的参数:
      num_output: 500                                  //[1]该层的输出元素的个数为:500
      weight_filler {                                  //[2]指定全连接层的初始化方案:xavier
          type: "xavier"
      }
      bias_filler {
          type: "constant"
      }
  }
}

layer {
  name: "relu1"
  type: "ReLU"
  bottom: "ip1"
  top: "ip1"
}

layer {
  name: "ip2"
  type: "InnerProduct"
  bottom: "ip1"
  top: "ip2"
  param {
      lr_mult: 1
  }
  param {
      lr_mult: 2
  }
  inner_product_param {            //[1]全连接层的计算参数
      num_output: 10                                    //[1]该层的输出为10个特征,对应0--9这10类数字
      weight_filler {                                  //[2]该层在网络初始化的初始化方案为:xavier
          type: "xavier"
      }
      bias_filler {                                      //[3]给该层添加偏置项,偏置项网络的初始化方案为:constant
          type: "constant"
      }
  }
}

layer {
  name: "accuracy"
  type: "Accuracy"
  bottom: "ip2"
  bottom: "label"
  top: "accuracy"
  include {
      phase: TEST
  }
}

layer {
  name: "loss"
  type: "SoftmaxWithLoss"
  bottom: "ip2"
  bottom: "label"
  top: "loss"
}
学习笔记03·修正caffe环境配置并运行mnist·从-1开始深度学习语音识别C 基础较弱,上面的图并没有完全理解,后面再深入研究,感觉每天自己都留下一个坑,后面要填平的坑还很多。。。。
















 

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值