使用pycaffe生成solver.prototxt文件并进行训练
来源:互联网 发布:ichart.js 编辑:程序博客网 时间:2024/06/08 10:40
原文地址:http://blog.csdn.net/c406495762
Python版本: Python2.7
运行平台: Ubuntu14.04
上几篇笔记记录了如何将图片数据转换成db(leveldb/lmdb)文件,计算图片数据的均值,train.prototxt和test.prototxt文件的编写。本篇笔记主要记录如何生成sovler文件,solver文件是训练的时候,需要用到的prototxt文件,它指明了train.prototxt和test.prototxt或train_test.prototxt。solver就是用来是loss最小化的优化方法。
一、solver.prototxt参数说明
依然是以cifar10_quick_solver.prototxt为例,内容如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
这些参数,都是有根据进行设置的,从上到下依次进行说明:
net:指定配置文件,cifar10_quick_solver.prototx文件中指定的prototxt文件为examples/cifar10/cifar10_quick_train_test.prototxt,可以使用train_net和test_net分别指定。
test_iter:测试迭代数。例如:有10000个测试样本,batch_size设为32,那么就需要迭代 10000/32=313次才完整地测试完一次,所以设置test_iter为313。
test_interval:每训练迭代test_interval次进行一次测试,例如50000个训练样本,batch_size为64,那么需要50000/64=782次才处理完一次全部训练样本,记作1 epoch。所以test_interval设置为782,即处理完一次所有的训练数据后,才去进行测试。
base_lr:基础学习率,学习策略使用的参数。
momentum:动量。
weight_decay:权重衰减。
lr_policy:学习策略。可选参数:fixed、step、exp、inv、multistep。
lr_prolicy参数说明:
- fixed: 保持base_lr不变;
- step: step: 如果设置为step,则需要设置一个stepsize,返回base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数;
- exp: 返回base_lr * gamma ^ iter,iter为当前的迭代次数;
- inv: 如何设置为inv,还需要设置一个power,返回base_lr * (1 + gamma * iter) ^ (- power);
- multistep: 如果设置为multistep,则还需要设置一个stepvalue,这个参数和step相似,step是均匀等间隔变化,而multistep则是根据stepvalue值变化;
stepvalue参数说明:
poly: 学习率进行多项式误差,返回base_lr (1 - iter/max_iter) ^ (power);
sigmoid: 学习率进行sigmod衰减,返回base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))。display:每迭代display次显示结果。
max_iter:最大迭代数,如果想训练100 epoch,则需要设置max_iter为100*test_intervel=78200。
snapshot:保存临时模型的迭代数。
snapshot_format:临时模型的保存格式。有两种选择:HDF5 和BINARYPROTO ,默认为BINARYPROTO
snapshot_prefix:模型前缀,就是训练好生成model的名字。不加前缀为iter_迭代数.caffemodel,加之后为lenet_iter_迭代次数.caffemodel。
solver_mode:优化模式。可以使用GPU或者CPU。
二、使用python生成solver.prototxt文件
以分析的cifar10_quick_solver.prototxt文件为例,使用python程序,生成这个文件。
1.代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
2.运行结果:
三、训练模型
从第一篇笔记至此,我们已经了解到如何将jpg图片转换成Caffe使用的db(levelbd/lmdb)文件,如何计算数据均值,如何使用python生成solver.prototxt、train.prototxt、test.prototxt文件。接下来,就可以进行训练的最后一步,使用caffe提供的python接口训练生成模型。如果不进行可视化,只想得到一个最终的训练model,可以使用如下代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 顶
- 2
- 踩
- 使用pycaffe生成solver.prototxt文件并进行训练
- Caffe学习笔记(五):使用pycaffe生成solver.prototxt文件并进行训练
- 使用pycaffe生成train.prototxt、test.prototxt文件
- Caffe学习笔记(四):使用pycaffe生成train.prototxt、test.prototxt文件
- 基于pycaffe从零开始写mnist(第二篇)——生成训练网络结构文件(train.prototxt)+测试网络结构文件(test.prototxt)
- caffe solver.prototxt文件
- caffe中 solver.prototxt文件
- caffe中 solver.prototxt文件
- Caffe模型训练之solver.prototxt配置
- 实用:使用caffe训练模型时solver.prototxt中的参数设置解析
- Caffe学习:使用pycaffe进行网络训练与测试
- solver.prototxt
- caffe之solver.prototxt文件参数设置
- caffe之solver.prototxt文件参数设置
- 区分caffe中train.prototxt,solver.prototxt,deploy.prototxt等文件
- Caffe学习:使用pycaffe生成mean_file.py文件
- Caffe学习:使用pycaffe生成mean_file.py文件
- solver.prototxt文件里面参数含义及其设置
- 如何自定义服务以及notification
- discuzx伪静态指定的专题不存在
- MySQL数据类型和类型选择
- 【计算几何】fzuoj 2273 Triangles
- 洛谷【P1541】乌龟棋
- 使用pycaffe生成solver.prototxt文件并进行训练
- Apache Lucene核心
- 解决更改hadoop核心配置文件后会出现DataNode,或者NameNode无法启动的问题
- hystrix学习笔记(三):hystrix应用实例
- nyoj116 士兵杀敌(二)
- 从单一WAR到多活, 记述一个创业公司的架构演变
- cp命令
- Python基础一_数据类型与字符串编码
- 数据库的读写分离