CAFFE学习笔记(一)Caffe_Example之训练mnist

0、参考文献

[1]caffe官网《Training LeNet on MNIST with Caffe》; 
[2]薛开宇《读书笔记4学习搭建自己的网络MNIST在caffe上进行训练与学习》([1]的翻译版,同时还有作者的一些注解,很赞);

1、*.sh文件如何执行?

①方法一:有sh后缀名的是linux脚本文件,在windows下为了执行这个文件,应该下载Git。然后对于sh文件右键,打开方式,选择git-bash.exe。 
②方法二:直接将后缀名改成“bat”然后双击。

2、如何载入MNIST数据并且开始训练?

(1)首先明确我们需要设定两个重要的prototxt文件,它们分别是CAFFE_ROOT/examples/mnist下的lenet_train.prototxt和lenet_solver.prototxt。 
(2)在lenet_train.prototxt中: 
①在此给出用于训练的MNIST数据mnist-train-leveldb以及mnist-test-leveldb的路径; 
②在此定义这个网络都有哪些层,给出每一层的定义。 
(3)在lenet_solver.prototxt中: 
①在此指明我们要训练的网络是lenet_train.prototxt,给出lenet_train.prototxt的路径; 
②在此指定是用CPU还是GPU。 
(4)在CAFFE_ROOT/examples/mnist下找到sh文件train_lenet.sh,在里面给出: 
①caffe编译后生成的可执行文件exe的名称(带不带“.exe”都可以),后面跟“train”代表选择“训练”; 
②刚才写好的lenet_solver.prototxt的路径。 
然后双击执行该脚本文件即可。

3、关于路径

如2中所述,在这两个prototxt和一个sh文件中,都要指明一些文件的路径。现总结如下: 
(1)lenet_train.prototxt中:训练集mnist-train-leveldb与测试集mnist-test-leveldb的路径; 
(2)lenet_solver.prototxt中:3-(1)的prototxt文件lenet_train.prototxt的路径; 
(3)train_lenet.sh中:caffe可执行文件exe名称,以及3-(2)的prototxt文件lenet_solver.prototxt的路径。

4、能够让程序跑起来的设置方法(法一)

(1)在CAFFE_ROOT/x64/Debug中,新建一个文件夹example2,使该文件夹与可执行文件Caffe.exe处于同一路径中; 

不要管examples和myexamples,这两个文件夹是师兄拷给我的时候就有了的,一个是caffe自带的,一个是师兄做的实验。总而言之与example2是独立关系。

(2)将刚才CAFFE_ROOT/examples/mnist下的mnist-test-leveldb、mnist-train-leveldb、lenet_train_test.prototxt以及lenet_solver.prototxt这四个文件全部拷贝到example2中去。 

(3)设定prototxt文件,给出相应的路径。 
①lenet_train_test.prototxt 
这个文件即之前说的lenet_train.prototxt,为了便于区分在后面加了一个_test。给出相对路径如下: 

此处给出绝对路径也是可以的。如: 

②lenet_solver.prototxt 
设置相对路径: 

这里给出绝对路径也是可以的。如: 

(4)将CAFFE_ROOT/examples/mnist下的train_lenet.sh文件拷贝到CAFFE_ROOT/x64/Debug中,使之与可执行文件Caffe.exe以及example2处于同一目录下。 

打开train_lenet.sh文件,修改内容如下: 
 
修改该文件后缀名为bat,双击train_lenet.bat,则可以成功跑起来。 

5、能够让程序跑起来的设置方法(法二)

这一次我们不再新建example2,亦不改动sh文件后缀名为bat,而是直接在CAFFE_ROOT/examples/mnist下修改两个prototxt文件和一个sh文件。这种方法更加简单直接,但是要注意保存prototxt文件备份以免写坏了改不回去。 
关于这两个prototxt文件如何设置路径在此不赘述。我直接给出设置截图如下: 
lenet_train_test.prototxt: 

lenet_solver.prototxt: 

接下来设置sh文件train_lenet.sh: 

设定完毕后,双击sh文件,则可以出现如下结果: 

6、总结

(1)在设置一些文件的路径时,可以给出绝对路径,也可以给出相对路径。 
(2)在使用train_lenet.sh训练时,可以直接使用sh文件跑起来,也可以修改后缀名为bat然后跑程序。 
(3)本文仅仅针对于如何“训练网络”展开,至于如何开启测试模式test对已经训练好网络进行测试,目前还没有进行这个实验,等之后做好了会更新文章的。

CAFFE学习笔记(一)Caffe_Example之训练mnist相关推荐

  1. Caffe学习笔记3——制作并训练自己的数据集

    Caffe学习笔记3 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和h ...

  2. caffe学习笔记(1)

    caffe学习笔记(1) 刚开始学习caffe,发现一个非常好的博客caffe学习.看了几遍收益匪浅,但是总是记不住,所以决定安装该博客的步骤一点一点实现,然后记录在该系列的博客中.原博客是在ubun ...

  3. Caffe学习笔记4图像特征进行可视化

    Caffe学习笔记4图像特征进行可视化 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit201 ...

  4. Caffe 学习笔记1

    Caffe 学习笔记1 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和 ...

  5. Caffe学习笔记2--Ubuntu 14.04 64bit 安装Caffe(GPU版本)

    0.检查配置 1. VMWare上运行的Ubuntu,并不能支持真实的GPU(除了特定版本的VMWare和特定的GPU,要求条件严格,所以我在VMWare上搭建好了Caffe环境后,又重新在Windo ...

  6. Caffe学习笔记2

    Caffe学习笔记2-用一个预训练模型提取特征 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hi ...

  7. caffe学习笔记(2)

    caffe学习笔记(2)-视觉层(vision layers) 本文参考博客caffe学习,是根据这篇博客做的学习笔记.详细情况可以参考原博客,真的很赞. 所有的层都具有的参数,如name, type ...

  8. HALCON 20.11:深度学习笔记(6)---有监督训练

    HALCON 20.11:深度学习笔记(6)---有监督训练 HALCON 20.11.0.0中,实现了深度学习方法.不同的DL方法有不同的结果.相应地,它们也使用不同的测量方法来确定网络的" ...

  9. HALCON 20.11:深度学习笔记(4)--- 网络和训练过程

    HALCON 20.11:深度学习笔记(4)--- 网络和训练过程 HALCON 20.11.0.0中,实现了深度学习方法.关于网络和训练过程如下: 在深度学习中,任务是通过网络发送输入图像来执行的. ...

最新文章

  1. c# winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值
  2. 读取位置 0x00000028 时发生访问冲突该怎么解决
  3. CPU的制造过程及大致原理
  4. java setcontenttype_response.setContentType()在Java过滤器中重置
  5. SQL Server使用 LEFT JOIN ON LIKE进行数据关联查询
  6. 做系统ghost步骤图解_掌握这几个步骤电脑小白也会做系统
  7. CSS3 Transform变形理解与应用
  8. 适合初学者的sql_适用于初学者SQL多重连接示例
  9. WVPPro+ZLMediaKit+大华相机推流+安卓模拟GB28181设备推流
  10. questasim编译报error: Declarations must precede statements. Look for stray semicolons.
  11. 关于严蔚敏教授的数据结构一书中return ok ,OK为1不为0的问题
  12. 【opencv图像处理】--2. 颜色空间,绘制图形,绘制(中文)文本
  13. R语言对数线性模型loglm函数_用R语言进行数据分析:常规和广义线性模型
  14. 二维数组横向和纵向遍历的巨大差距:缺页问题
  15. SSM框架报错分析(一)——There is no getter for property named 'XXX' in 'class java.lang.String'...
  16. BGP协议解析(白话版)
  17. Gerrit仓库备份方案
  18. spark直接连接postgre数据库
  19. matlab产生雷达信号,用matlab仿真雷达信号
  20. 合并两个有序的线性表

热门文章

  1. 文科学业水平测试题软件,学业水平测试:文科备战理科篇
  2. 磁盘剩余空间策略_如何无损扩展C盘空间大小,这一招足够!
  3. android 判断按钮是否已经有onclicklinstener,通过点击事件监听setOnClickListener彻底理解回调...
  4. 解决Ubuntu spyder 无法输入中文
  5. 41. Leetcode 662. 二叉树最大宽度 (二叉树-二叉树性质)
  6. Leetcode 51. N 皇后 (每日一题 20211008)
  7. 概率统计笔记: 协方差与相关系数
  8. 强化学习笔记: MDP - Policy iteration
  9. Flink从入门到精通100篇(二十三)-基于Apache Flink的爱奇艺实时计算平台建设实践
  10. Flink从入门到精通100篇(七)-如何基于 Flink 搭建一个实用有效的在线实时反欺诈平台?