caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面

有一些参数需要计算的,也不是乱设置。

假设我们有50000个训练样本,batch_size为64,即每批次处理64个样本,那么需要迭代50000/64=782次才处理完一次全部的样本。我们把处理完一次所有的样本,称之为一代,即epoch。所以,这里的test_interval设置为782,即处理完一次所有的训练数据后,才去进行测试。如果我们想训练100代,则需要设置max_iter为78200.

同理,如果有10000个测试样本,batch_size设为32,那么需要迭代10000/32=313次才完整地测试完一次,所以设置test_iter为313.

学习率变化规律我们设置为随着迭代次数的增加,慢慢变低。总共迭代78200次,我们将变化lr_rate三次,所以stepsize设置为78200/3=26067,即每迭代26067次,我们就降低一次学习率。

下面是生成solver文件的python代码,比较简单:

# -*- coding: utf-8 -*-
"""
Created on Sun Jul 17 18:20:57 2016 @author: root
"""
path='/home/xxx/data/'
solver_file=path+'solver.prototxt' #solver文件保存位置 sp={}
sp['train_net']=‘“’+path+'train.prototxt”' # 训练配置文件
sp['test_net']=‘“’+path+'val.prototxt”' # 测试配置文件
sp['test_iter']='313' # 测试迭代次数
sp['test_interval']='782' # 测试间隔
sp['base_lr']='0.001' # 基础学习率
sp['display']='782' # 屏幕日志显示间隔
sp['max_iter']='78200' # 最大迭代次数
sp['lr_policy']='“step”' # 学习率变化规律
sp['gamma']='0.1' # 学习率变化指数
sp['momentum']='0.9' # 动量
sp['weight_decay']='0.0005' # 权值衰减
sp['stepsize']='26067' # 学习率变化频率
sp['snapshot']='7820' # 保存model间隔
sp['snapshot_prefix']=‘"snapshot"’ # 保存的model前缀
sp['solver_mode']='GPU' # 是否使用gpu
sp['solver_type']='SGD' # 优化算法 def write_solver():
#写入文件
with open(solver_file, 'w') as f:
for key, value in sorted(sp.items()):
if not(type(value) is str):
raise TypeError('All solver parameters must be strings')
f.write('%s: %s\n' % (key, value))
if __name__ == '__main__':
write_solver()

执行上面的文件,我们就会得到一个solver.prototxt文件,有了这个文件,我们下一步就可以进行训练了。

caffe的python接口学习(2)生成solver文件的更多相关文章

  1. caffe的python接口学习(2):生成solver文件

    caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面,如下: base_lr: 0.001 display: 782 gamma: 0.1 ...

  2. caffe的python接口学习(1):生成配置文件

    caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...

  3. caffe的python接口学习(4)mnist实例手写数字识别

    以下主要是摘抄denny博文的内容,更多内容大家去看原作者吧 一 数据准备 准备训练集和测试集图片的列表清单; 二 导入caffe库,设定文件路径 # -*- coding: utf-8 -*- im ...

  4. caffe的python接口学习(5):生成deploy文件

    如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.prototxt文件,这个文件实际上和test.prototxt文件差不多,只是头尾不相同而也.deploy文件没有第一层数据输入层, ...

  5. caffe的python接口学习(5)生成deploy文件

    如果要把训练好的模型拿来测试新的图片,那必须得要一个deploy.prototxt文件,这个文件实际上和test.prototxt文件差不多,只是头尾不相同而也.deploy文件没有第一层数据输入层, ...

  6. caffe的python接口学习(7):绘制loss和accuracy曲线

    使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...

  7. caffe的python接口学习(4):mnist实例---手写数字识别

    深度学习的第一个实例一般都是mnist,只要这个例子完全弄懂了,其它的就是举一反三的事了.由于篇幅原因,本文不具体介绍配置文件里面每个参数的具体函义,如果想弄明白的,请参看我以前的博文: 数据层及参数 ...

  8. caffe的python接口学习(1)生成配置文件

    ---恢复内容开始--- 看了denny的博客,写下自己觉得简短有用的部分 想用caffe训练数据首先要学会编写配置文件: (即便是用别人训练好的模型也要进行微调的,所以此关不可跨越) 代码就不粘贴了 ...

  9. caffe的python接口学习(6)用训练好的模型caffemodel分类新图片

    经过前面两篇博文的学习,我们已经训练好了一个caffemodel模型,并生成了一个deploy.prototxt文件,现在我们就利用这两个文件来对一个新的图片进行分类预测. 我们从mnist数据集的t ...

随机推荐

  1. 如何让a==1&&a==2&a==3成立

    /* * == 进行比较的时候,如果左右两边数据类型不一样,则先转换为相同的数据类型,然后在进行比较 *    1.{} == {} false 两个数据进行比较,比较的是堆内存的地址 *    2. ...

  2. Linux kernel学习(序)

    伟大的Linux kernel有几大重要模块: 1.文件系统(File System) 2.进程调度(Process Scheduler) 3.内存管理(Memory Management) 4.进程 ...

  3. ASP.NET中使用Entity Framework开发增删改查的Demo(EF增删改查+母版页的使用)

    这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 这里是该项目的第二部分, 第一部分 第二部分(当前部分) 大完结版本 此Demo是新建了一个音乐类型的web,然后使用母版页 ...

  4. Java实现 LeetCode 224 基本计算器

    224. 基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 . 示例 1: 输入: "1 ...

  5. java实现矩形区域的交和并

    在编写图形界面软件的时候,经常会遇到处理两个矩形的关系. 如图[1.jpg]所示,矩形的交集指的是:两个矩形重叠区的矩形,当然也可能不存在(参看[2.jpg]).两个矩形的并集指的是:能包含这两个矩形 ...

  6. Java实现无向图的欧拉回路判断问题

    1 问题描述 Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路.现给定一个图,问是否存在欧拉回路? Input 测试输入包含若干测试 ...

  7. ntpq无法查询同步信息,显示The specified class was not found

    年初时工班发现工作站和服务器都没办法用ntpq看时钟同步了,如下图所示.输入ntpq-p 就显示"The specified class was not found" 通过排查,发 ...

  8. 快速幂解法--x^n

    class Solution{ public: double myPow(double x,int n){ if(==x || n==) return ; if(n == ) return x; if ...

  9. linux下git相关命令

    请参照以下文章:https://www.cnblogs.com/pengtangtang/articles/PengTangTang_git_one.html

  10. 02-Python基础1

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...