• 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对已经训练好网络进行测试,目前还没有进行这个实验,等之后做好了会更新文章的。

  • 相关阅读:
    [抄书]The Pipes and Filters pattern
    [抄书]The Layers pattern
    OpenGL Step by Step (1)
    [HOOPS]二维点向三维空间投影
    心仪已久的工具:BoundsChecker v7.2
    [HOOPS]用HC_Show_...获取正确的点的坐标位置
    小试zlib
    XML (2) Document Type Definitions (DTD)
    UML (1) 设计模式及作业附图
    XML (1) 什么是XML
  • 原文地址:https://www.cnblogs.com/NanShan2016/p/5469942.html
Copyright © 2020-2023  润新知