Caffe:学习第一天

前言:

最近时间有裕,因此想将之前了解到的Caffe框架模型训练的事情整理一下。

本部分会涉及:

1.Caffe框架的安装

2.Caffe框架的基本组成

3.Caffe框架中参数简介

    3.1 trainval.prototxt 文件解析

    3.2 solver.prototxt 文件参数解析
        
        3.2.1 学习策略(lr_policy)解析

正文:

1.Caffe框架的安装:

安装环境: Ubuntu16.04 

显卡资源: 2080ti 11G显存

安装步骤:点击这里

2.Caffe框架的基本组成

|------Caffe Project
|
|---lenet_5_trainval.caffemodel  # 模型文件 
|
|---lenet_5_solver.prototxt    # 模型训练超参数文件
|
|---lenet_5_train.sh           # 模型训练执行脚本文件

其中,lenet_5_train.sh文件如下:

#! /usr/bin/env sh

./build/tools/caffe train  \ 

--solver  = "xxx/lenet_5_solver.prototxt"  # 模型训练超参数文件
--weights = "xxx/lenet_5.caffemodel"       # 加载预训练模型文件
--gpu 1 2>&1 | tee /home/xxx/lenet_5.log   # 调用gpu资源并存储训练日志文件

lenet_5_train.sh文件中调用了编译好的build/tools/caffe.bin 二进制文件,

参数--solover指定了训练超参数文件;

参数--weights指定了预训练模型文件;

参数--gpu指定了显卡设备号以及训练日志文件存储路径.

3.Caffe框架中参数简介

3.1trainval.prototxt 文件解析

可参考《深度学习 21天实战Caffe》P60-64

3.2solver.prototxt 文件参数解析

# 用于训练/预测的网络描述文件
net: "examples/mnist/lenet_5_trainval.prototxt"

# 预测阶段每次预测的样本个数
# test_iter = num_test_sample/batch_size(test)
test_iter:100

# 训练阶段每次预测的迭代间隔次数(即迭代500次对测试集样本做一次预测)
# test_interval = num_train_sample/batch_size(train)
test_interval:500

# 网络模型的基础学习率、冲量、权重衰量
base_ir:0.01
momentum:0.9
weight_decay:0.0005 

# 学习率的衰减策略
ir_policy:"inv"
gamma:0.0001
power:0.75

# 每迭代100次,在屏幕上打印一次log
display:100

# 最大迭代次数
max_iter:10000

# 每5000次存储一次模型文件
snapshot:5000
snapshot_prefix:"example/mnist/lenet_5"

# Caffe 训练资源配置
solver_mode:GPU

其中,snapshot 用于设置训练多少次后进行保存,默认为0,不保存。snapshot_prefix 为设置保存路径。也可以设置 snapshot_format,保存的类型。有两种选择:HDF5 和 BINARYPROTO ,默认为 BINARYPROTO。

3.2.1 学习策略(lr_policy)解析

a.fixed

fixed: always return base_lr.

parameters:

base_lr: 0.01
lr_policy: "fixed"

b.step

step: return base_lr * gamma ^ (floor(iter / step))

parameters:

base_lr: 0.01
lr_policy: "step"
gamma: 0.1
stepsize: 30
max_iter: 100

c.exp

exp: return base_lr * gamma ^ iter

parameters:

base_lr: 0.01
lr_policy: "exp"
gamma: 0.1
max_iter: 100

d.inv

inv: return base_lr * (1 + gamma * iter) ^ (- power)

parameters:

base_lr: 0.01
lr_policy: "inv"
gamma: 0.1
power: 0.75
max_iter: 10000

e.multistep

multistep: similar to step but it allows non uniform steps defined by stepvalue

parameters:

base_lr: 0.01
lr_policy: "multistep"
gamma: 0.5
stepvalue: 1000
stepvalue: 3000
stepvalue: 4000
stepvalue: 4500
stepvalue: 5000
max_iter: 6000

f.poly

poly: the effective learning rate follows a polynomial decay,

to be zero by the max_iter. return base_lr (1 - iter/max_iter) ^ (power)

parameters:

base_lr: 0.01
lr_policy: "poly"
power: 0.5
max_iter: 10000

g.sigmoid

sigmoid: the effective learning rate follows a sigmod decay return base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))

parameters:

base_lr: 0.01
lr_policy: "sigmoid"
gamma: -0.001
stepsize: 5000
max_iter: 10000

此外,还有比较关键的几个训练超参数:

average_loss:

 相当于做了一个平滑. 控制台打印训练loss时, 当前loss为最近20个iteration的loss的平均数. 仅仅是为了显示好看, 不影响训练.

iter_size:

当你的显卡显存不足时,该参数可以有效解决batch_size的问题.
该参数的作用为:forward iter_size次后才backpropogate一次, 相当于将batch_size增大了iter_size倍.

real batch_size = batch_size * iter_size.

每执行一次solver.step(1), 会执行batch_size * iter_size次forward与1次backward.

参考文献:https://www.cnblogs.com/dengdan890730/p/6273679.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值