本文主要是给大家介绍了caffe的python插口形成solver文件详细说明学习培训实例,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的不断进步,尽早涨薪
也有一些基本参数必须计算出来的,并不是乱设定。
solver.prototxt的文件参数设置
caffe在训练的时候,需要一些参数设置,我们一般将这些参数设置在一个叫solver.prototxt的文件里面,如下:
base_lr:0.001
display:782
gamma:0.1
lr_policy:“step”
max_iter:78200
momentum:0.9
snapshot:7820
snapshot_prefix:“snapshot”
solver_mode:GPU
solver_type:SGD
stepsize:26067
test_interval:782
test_iter:313
test_net:“/home/xxx/data/val.prototxt”
train_net:“/home/xxx/data/proto/train.prototxt”
weight_decay:0.0005
假定我们会有50000个svm分类器,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文件
下面是生成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:%sn'%(key,value)) if __name__=='__main__': write_solver()
执行上面的文件,我们就会得到一个solver.prototxt文件,有了这个文件,我们下一步就可以进行训练了。
当然,如果你觉得上面这种键值对的字典方式,写起来容易出错,我们也可以使用另外一种比较简便的方法,没有引号,不太容易出错,如下:
简便的方法
#-*-coding:utf-8-*- from caffe.proto import caffe_pb2 s=caffe_pb2.SolverParameter() path='/home/xxx/data/' solver_file=path+'solver1.prototxt' s.train_net=path+'train.prototxt' s.test_net.append(path+'val.prototxt') s.test_interval=782 s.test_iter.append(313) s.max_iter=78200 s.base_lr=0.001 s.momentum=0.9 s.weight_decay=5e-4 s.lr_policy='step' s.stepsize=26067 s.gamma=0.1 s.display=782 s.snapshot=7820 s.snapshot_prefix='shapshot' s.type=“SGD” s.solver_mode=caffe_pb2.SolverParameter.GPU with open(solver_file,'w')as f: f.write(str(s)) 训练模型(training) 如果不进行可视化,只想得到一个最终的训练model,那么代码非常简单,如下: import caffe caffe.set_device(0) caffe.set_mode_gpu() solver=caffe.SGDSolver('/home/xxx/data/solver.prototxt') solver.solve()
综上所述,这篇文章就给大家介绍完毕了,希望可以给大家带来帮助。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/128776.html
文中主要是给大家介绍了caffe的python插口之手写数字识别mnist案例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 论文引言 机器学习第一个案例一般都是是mnist,只需这个案例彻底搞懂了,其他的便是触类旁通的事了。因为字数缘故,文中不简单介绍环境变量里边每一个指标的具体函义,如果要搞明白的,请参考我之前的微博文章: 数据访问层及主...
此篇文章主要是给大家介绍了caffe的python插口制作loss和accuracy曲线图实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 前言 使用python插口来运行caffe程序流程,根本原因是python很容易数据可视化。所以才建议大家在cmd下边运行python程序流程。如果一定要在cmd下边运作,不如直接用c++算了。 强烈推...
此篇文章主要是详细介绍了caffe的python插口形成环境变量学习培训,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 caffe是C++语言表达所写的,可能大家不太熟,所以想要更方便的编程语言来达到。caffe给予matlab接口和python插口,这几种语言表达就比较简单,并且很容易开展数据可视化,导致学习培训更为迅速,了解更加深刻。 一年前,我在...
本文主要是给大家介绍了caffe的python插口生成deploy文件学习培训及其用练习好一点的实体模型(caffemodel)来归类新的图片实例详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 caffe的python插口生成deploy文件 假如要将练习好一点的实体模型用于检测新的图片,那必然必须得一个deploy.prototxt文件,这一...
文中关键给大家介绍了Caffe神经网络solver及其配备详细说明,感兴趣的小伙伴可以参考借鉴一下,希望可以有一定的帮助,祝愿大家多多的发展,尽早涨薪 前言 solver算是caffe的最核心的关键,它融洽着全部建模运行。caffe程序执行必带的另一个主要参数就是solver环境变量。运行代码一般为 #caffetrain--solver=*_slover.prototxt 在Deep...
阅读 873·2023-01-14 11:38
阅读 819·2023-01-14 11:04
阅读 668·2023-01-14 10:48
阅读 1823·2023-01-14 10:34
阅读 874·2023-01-14 10:24
阅读 738·2023-01-14 10:18
阅读 466·2023-01-14 10:09
阅读 500·2023-01-14 10:02