caffe简单运行所需的文件——lenet(CSDN-markdown编辑器试用)

来源:互联网 发布:大学生网络创业问题 编辑:程序博客网 时间:2024/06/18 07:22

在ubuntu系统下,如何使用caffe,首先要有一个求解文件,一个网络文件。

以mnist为例,首先是lenet_solver.prototxt文件,求解文件的内容
位置:~/caffe-master/example/mnist/lenet_solver.prototxt

net: “examples/mnist/lenet_train_test.prototxt” #读取网络的路径

test_iter: 100 #每次测试一百个

test_interval: 500 #每隔五百个测试一次

base_lr: 0.01 #学习率
momentum: 0.9 #动量参数
weight_decay: 0.0005 #权重衰减系数

lr_policy: “inv” #梯度下降的相关优化策略
gamma: 0.0001
power: 0.75

display: 100 #每迭代100次显示一次

max_iter: 10000 #最大迭代次数

snapshot: 5000 #每5000次保存一次快照(快照可以接着训练)
snapshot_prefix: “examples/mnist/lenet” #快照保存路径和开头名称

solver_mode: GPU #求解模式,使用CPU或者GPU


上面的net指向的是网络文件,还是以mnist为例,net文件是lenet_train_test.prototxt,训练和测试都用这个网络
位置:~/caffe-master/example/mnist/lenet_train_test.prototxt

name: “LeNet” #网络名称
layer {
name: “mnist” #层名
type: “Data” #本层的数据类型
top: “data” #下一层是data层
top: “label” #下一层是label层
include {
phase: TRAIN #在trian阶段使用
}
transform_param { #改变参数
scale: 0.00390625 #改变的比例,所用图片乘以scale,就是1/255,图片归一化
}
data_param {
source: “examples/mnist/mnist_train_lmdb” #训练数据路径
batch_size: 64 #每次训练64张图片
backend: LMDB #数据格式是LMDB
}
}
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” #层名称是conv1
type: “Convolution” #层类型是卷积
bottom: “data” #上一层是数据层
top: “conv1” #下一层是卷积
param {
lr_mult: 1#学习率
}
param { #偏置项(有什么用?我还不知道)
lr_mult: 2 #学习率
}
convolution_param { #卷积核参数
num_output: 20 #输出数
kernel_size: 5 #卷积核大小
stride: 1 #步长
weight_filler {
type: “xavier” #卷积核初始化方法
}
bias_filler {
type: “constant” #偏置项初始化方法
}
}
}
layer {
name: “pool1” #层名为pool1
type: “Pooling” #层类型为池化
bottom: “conv1” #上一层是conv1
top: “pool1” #下一层是pool1
pooling_param { #池化参数
pool: MAX #池化类型为最大池化
kernel_size: 2 #池化核大小为2
stride: 2 #步长为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 {
num_output: 500
weight_filler {
type: “xavier”
}
bias_filler {
type: “constant”
}
}
}
layer {
name: “relu1”
#激活函数,
#在标准的ReLU激活函数中,当输入为x时,如果x>0,则输出 x,如果输入<=0,则输出0,即输出为max(0,x).在非标准的ReLU激活函数中,当输入x<=0时, 输出为x * negative_slop(它是一个参数,默认为0).
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 {
num_output: 10
weight_filler {
type: “xavier”
}
bias_filler {
type: “constant”
}
}
}
layer {
name: “accuracy”
type: “Accuracy” #精度层,计算精度
bottom: “ip2”
bottom: “label”
top: “accuracy”
include {
phase: TEST
}
}
layer {
name: “loss”
type: “SoftmaxWithLoss” #loss层,计算loss,计算方式为SoftmaxWithLoss
bottom: “ip2”
bottom: “label”
top: “loss”
}


上面一个net文件需要的是两个数据来源,必须为LMDB格式的,可以用~/caffe-master/examples/mnist/create_mnist.sh来创建。

如果想用自己的图片来创建LMDB格式,那么用~/caffe-master/examples/imagenet/create_imagenet.sh来创建

路径顺着填就好,
RESIZE=false
if $RESIZE; then
RESIZE_HEIGHT=128
RESIZE_WIDTH=128
else
RESIZE_HEIGHT=0
RESIZE_WIDTH=0
fi
这一串是统一图片尺寸,为128*128

还可以
GLOG_logtostderr=1 $TOOLS/convert_imageset \

--resize_height=$RESIZE_HEIGHT \--resize_width=$RESIZE_WIDTH \---shuffle=true \   #加上这个随机改变图片顺序

这样就可以改变图片的输入顺序


最后编写一个训练脚本train_lenet.sh

#!/usr/bin/env sh

set -e

./build/tools/caffe train –solver=examples/mnist/lenet_solver.prototxt $@

一定要在caffe的根目录下运行,~/caffe-master

训练可以用快照恢复,改动train_lenet.sh

#!/usr/bin/env sh

./build/tools/caffe train
–solver=examples/mnist/lenet_solver.prototxt
–snapshot examples/mnist/lenet_iter_7000.solverstate

训练完后测试训练结果,编写test_lenet.sh

#!/usr/bin/env sh

./build/tools/caffe test
–model=examples/catdog/lenet_train_test.prototxt
–weights=examples/catdog/lenet_iter_27791.caffemodel -iterations 100

0 0
原创粉丝点击