深度学习21天实战caffe学习笔记《12:Caffe 最优化求解过程》

caffe相关代码注释:https://github.com/QueenJuliaZxx/Caffe

1、求解器Solver

目的:让损失函数达到全局最小;

特性:

  • 负责记录优化过程,创建用于学习的训练网络和用于评估学习效果的测试网络;
  • 调用Forward-->调用Backword-->更新权值,反复迭代优化模型;
  • 周期性地评估测试网络;
  • 在优化过程中为模型、求解器状态打快照;

为了让权值从初始化状态向更好的模型前进,求解器在每次迭代中做了如下事情:

  • 调用Net的前向传播函数来计算输出和损失函数;
  • 调用Net的反向传播函数来计算梯度;
  • 根据求解器方法,将梯度转换为权值增量;
  • 根据学习速率、你是全职、所用方法更新求解器状态;

2、Solver的实现

权值层(卷积层和全连接层)需要学习,学习速率控制收敛(把握“度”),以此达到权值学习“不偏不倚”;
2.1、算法描述:
求解器种类:SGD、AdaDelta、自适应梯度法(ADAGRAD)、Adam、NAG、RMSprop
  • 学习速率(LR):负梯度的权重-->今天学了多少;
  • 遗忘因子(Momentum):权值更新历史Vt的权重-->以前学过的知识记得多少;


注:如果训练发散(损失函数值变得非常大,甚至出现NaN或Inf),试着减小base_lr,然后重新训练,直到不再发散。


2.2、数据结构描述

(1).查看Solver描述信息;打开 caffe/src/proto/caffe.proto

(2).查看Solver类声明;打开 include/caffe/solver.hpp

(3).查看Solver类实现;打开 src/caffe/solvers/xx_solver.cpp

2.3、训练过程

求解器核心函数Solve()-->求解器迭代过程Step()-->SGDSolver中ApplyUpdate()实现...

2.4、预测过程

Solver里面test_nets_切换到新数据集进行预测,调用TestALL();

2.5、Solver的快照和恢复功能

求解器在Solver::Snapshot()和Solver::SnapshotSolverState()中将权值和训练时的状态打快照;

权值快照将学习到的模型导出,而求解器快照允许将特定快照点恢复训练,求解器在Solver::Restore ()和Solver::RestoreSolverState()恢复训练, 权值保存到*.caffemodel文件中,求解器保存到*.solverstate文件中,每个文件都有_iter_N后缀。

具体的实现还是得仔细看看相关文档!





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女王の专属领地

您的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值