首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >caffe详解之solver

caffe详解之solver

作者头像
AI异构
发布2020-07-29 11:01:59
4880
发布2020-07-29 11:01:59
举报
文章被收录于专栏:AI异构AI异构AI异构

从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识!

solver配置说明

通过前面的讲解我们了解了不同的层,作为我们设计深度神经网络的积木,梳理了caffe中给定的损失函数(当然我们也可以针对自己的问题设计),并进一步对优化算法进行了细致的总结,接下来我们将caffe中需要配置的solver.prototxt中涉及到的参数进行详细剖析。 我们首先看一看lenet中定义的solver配置文件。

net: "examples/mnist/lenet_train_test.prototxt"  #网络位置

test_iter: 100 #设置测试迭代次数
test_interval: 500 #测试间隔。也就是每训练500次,才进行一次测试。
base_lr: 0.01 #用于设置基础学习率
momentum: 0.9 #动量大小
type: SGD     #SGD优化算法
weight_decay: 0.0005  # 权重衰减项(正则化项),防止过拟合的一个参数λ
lr_policy: "inv" #学习率调整策略
gamma: 0.0001
power: 0.75
display: 100
max_iter: 20000  # 最大迭代次数。这个数设置太小,会导致没有收敛,精确度很低。设置太大,会导致震荡,浪费时间。
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
solver_mode: CPU
设置网络定义文件位置
net: "examples/mnist/lenet_train_test.prototxt"

设置网络定义文件位置,也可以分别设定traintest如下所示:

train_net: "examples/hdf5_classification/logreg_auto_train.prototxt"
test_net: "examples/hdf5_classification/logreg_auto_test.prototxt"
设置测试迭代次数
test_iter: 100

这个要与test layer中的batch_size结合起来理解。mnist数据中测试样本总数为10000,一次性执行全部数据效率很低,因此我们将测试数据分成几个批次(batch_num)来执行,每个批次的数量就是batch_size。假设我们设置batch_size为100,则需要迭代100次才能将10000个数据全部执行完。因此test_iter设置为100。执行完一次全部数据,称之为一个epoch。 总结

  • 当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个epoch。一般情况下在迭代的过程中需要使用多次epoch防止模型欠拟合。
  • 在不能将数据一次性通过神经网络的时候,就需要将数据集分成几个batch(Number of batches,简记为batch_num)。
  • 一个 batch 中的样本总数(Batch Size,简记为batch_size)
  • Iterationbatch 需要完成一个 epoch 的次数。记住:在一个 epoch 中,batch_numIteration是相等的。比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成4个大小为 500 的 batch_size,那么完成一个 epoch 需要 4 个 iteration,对应的batch_num也是4。
设置测试间隔
test_interval: 500

测试间隔。也就是每训练500次,才进行一次测试。

设置优化算法类型
type: SGD

常见的优化算法包括:SGD、Adagrad、RMSProp、AdaDelta、Adam等。

设置动量大小
momentum :0.9

momentum指的是设置上面公式r的值,一般设置为0.9

设置权重衰减系数
weight_decay: 0.0005
设置显示周期
display: 100

每训练100次,在屏幕上显示一次。如果设置为0,则不显示。

设置最大迭代次数
max_iter: 20000

最大迭代次数,到达20000次就停止了。

设置快照
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"

快照。将训练出来的modelsolver状态进行保存,snapshot用于设置训练多少次后进行保存,默认为0,不保存。snapshot_prefix设置保存路径。

还可以设置snapshot_diff,是否保存梯度值,默认为false,不保存。

也可以设置snapshot_format,保存的类型。有两种选择:HDF5BINARYPROTO,默认为BINARYPROTO

设置运行模式
solver_mode: CPU

设置运行模式。默认为GPU,如果你没有GPU,则需要改成CPU,否则会出错。

设置学习率调整策略
base_lr: 0.01    # base_lr用于设置基础学习率
lr_policy: "inv" # 学习率调整策略
gamma: 0.0001
power: 0.75

学习率调整的策略还包括

参考

Caffe学习系列(7):solver及其配置

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI异构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • solver配置说明
    • 设置网络定义文件位置
      • 设置测试迭代次数
        • 设置测试间隔
          • 设置优化算法类型
            • 设置动量大小
              • 设置权重衰减系数
                • 设置显示周期
                  • 设置最大迭代次数
                    • 设置快照
                      • 设置运行模式
                        • 设置学习率调整策略
                        • 参考
                        相关产品与服务
                        批量计算
                        批量计算(BatchCompute,Batch)是为有大数据计算业务的企业、科研单位等提供高性价比且易用的计算服务。批量计算 Batch 可以根据用户提供的批处理规模,智能地管理作业和调动其所需的最佳资源。有了 Batch 的帮助,您可以将精力集中在如何分析和处理数据结果上。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档