caffe学习笔记(五)--使用自己的数据集第一次进行训练

接着上一篇博文:制作自己的数据集
在制作好我们自己的LMDB格式的数据集后,我们就可以依照前面mnist的例程来对LeNet模型进行训练啦,有木有很激动(≧▽≦)/ (虽然现在对模型而是一片懵懂)
简单的说下步骤:

  1. 从caffe root/exmples/mnist文件夹中复制过来我需要的solver.prototxt和train_test.prototxt文件,将其重命名为my_solver.prototxt my_train_test.prototxt文件,并修改其中需要修改的参数
  2. 进行训练

1 solver.prototxt和train_test.prototxt文件,修改其中的参数

先看下train_test.prototxt文件,这个文件是LeNet的模型配置文件,里面有输入层、卷积层、池化层和全连层的定义,在这里我们只需要对输入层中的两个位置进行修改。

还有一个问题就是,在输出的时候,由于LeNet是对10个字符进行输出的,也就是10类,这里我分的是3类,不知道不修改的有没有影响,和群里的同学交流也说碰到了这种情况,但是好像不影响。此处是个问题,还得继续研究

name: "LeNet"
layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "myfile/build_lmdb/train_lmdb"  //需要修改路径
    batch_size: 64
    backend: LMDB
  }
}
layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "myfile/build_lmdb/val_lmdb"  //需要修改路径
    batch_size: 100
    backend: LMDB
  }
}

再看下solver.prototxt文件,其中:
1. net的路径需要修改为自己的
2. snapshot_prefix的路径是生成的模型放在哪里
3. solver_mode: CPU 选择CPU模式
4. 其余的就根据自己的需要调整参数

# The train/test net protocol buffer definition
net: "myfile/build_lmdb/my_train_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of MNIST, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 2
# Carry out testing every 500 training iterations.
test_interval: 5
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# The learning rate policy
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# Display every 100 iterations
display: 2
# The maximum number of iterations
max_iter: 80
# snapshot intermediate results
snapshot: 150
snapshot_prefix: "myfile/build_lmdb/"
# solver mode: CPU or GPU
solver_mode: CPU

使用下面的train_mynet.sh文件来训练LeNet模型,将其中的 –solver后面改成自己的路径

#!/usr/bin/env sh
set -e

./build/tools/caffe train --solver=myfile/build_lmdb/my_solver.prototxt $@

2 进行训练

在Linux终端下输入下面的代码进行训练

CD caffe
./examples/mnist/train_mynet.sh 

caffe学习笔记(五)--使用自己的数据集第一次进行训练_第1张图片

可以看到在40次的时候,accuracy就为1了,网络应该是训练成功了,但是此时训练的模型可能并不是最好的,因为还有过拟合,样本小的影响等

这里写图片描述

接下来就是要对训练好的模型,进行使用,下次接着实验,先吃饭~

你可能感兴趣的:(Caffe学习笔记)