zoukankan      html  css  js  c++  java
  • Caffe的solver参数介绍

     

    版权声明:转载请注明出处,谢谢! https://blog.csdn.net/Quincuntial/article/details/59109447

    1. Parameters

    solver.prototxt文件是用来告诉caffe如何训练网络的。solver.prototxt的各个参数的解释如下:

    • base_lr 
      这个参数是用来表示网络的初始学习率的。这个值是一个浮点型实数。
    • lr_policy 
      这个参数是用来表示学习率随着时间是如何变化的。值是字符串,需要加""。学习率变化的可选参数有: 
      “step”——需要设置stepsize。根据gamma参数和stepsize参数来降低学习率,base_lr * gamma ^ (floor(iter / stepsize))iter是当前迭代次数。学习率每迭代stepsize次变化一次。 
      “multistep”——与step类似,需要设置stepvalue,学习率根据stepvalue进行变化。 
      “fixed”——学习率base_lr保持不变。 
      “inv”——学习率变化公式为base_lr * (1 + gamma * iter) ^ (- power) 
      “exp”——学习率变化公式为base_lr * gamma ^ iter} 
      “poly”——学习率以多项式形式衰减,到最大迭代次数时降为0。学习率变化公式为base_lr * (1 - iter/max_iter) ^ (power)。 
      “sigmoid”——学习率以S型曲线形式衰减,学习率变化公式为base_lr * (1 / (1 + exp(-gamma * (iter - stepsize))))
    • gamma 
      这个参数表示学习率每次的变化程度,值为实数。
    • stepsize 
      这个参数表示什么时候应该进行训练的下一过程,值为正整数。主要用在lr_policystep的情况。
    • stepvalue 
      这个参数表示什么时候应该进行训练的下一过程,值为正整数。主要用在lr_policymultistep的情况。
    • max_iter 
      这个参数表示训练神经网络迭代的最大次数,值为正整数。
    • momentum 
      这个参数表示在新的计算中要保留的前面的权重数量,值为真分数,通常设为0.9。
    • weight_decay 
      这个参数表示对较大权重的惩罚(正则化)因子。值为真分数。 
      This parameter indicates the factor of (regularization) penalization of large weights. This value is a often a real fraction.
    • solver_mode 
      这个参数用来表示求解神经网络的模式——值为CPU or GPU。
    • snapshot 
      这个参数用来表示每迭代多少次就应该保存snapshot的modelsolverstate,值为正整数。
    • snapshot_prefix: 
      这个参数用来表示保存snapshot时modelsolverstate的前缀,值为带引号的字符串。
    • net: 
      这个参数表示训练网络所在的位置,值为带引号的字符串。
    • test_iter 
      这个参数表示 
      这个参数表示每个test_interval进行多少次test迭代,值为正整数。
    • test_interval 
      这个参数表示什么时候进行数据的测试,值为正整数。
    • display 
      这个参数用来表示什么时候将输出结果打印到屏幕上,值为正整数,表示迭代次数。
    • type 
      这个参数表示训练神经网络采用的反向传播算法,值为带引号的字符串。可选的值有: 
      Stochastic Gradient Descent “SGD”——随机梯度下降,默认值。 
      AdaDelta “AdaDelta”——一种”鲁棒的学习率方法“,是基于梯度的优化方法。 
      Adaptive Gradient “AdaGrad”——自适应梯度方法。 
      Adam “Adam”——一种基于梯度的优化方法。 
      Nesterov’s Accelerated Gradient “Nesterov”——Nesterov的加速梯度法,作为凸优化中最理想的方法,其收敛速度非常快。 
      RMSprop “RMSProp”——一种基于梯度的优化方法。

    2. Demo

    • lr_policy
    # lr_policy为multisetp
    base_lr: 0.01
    momentum: 0.9
    lr_policy: "multistep"
    gamma: 0.9
    stepvalue: 1000
    stepvalue: 2000
    stepvalue: 3000
    stepvalue: 4000
    stepvalue: 5000
    
    # lr_policy为step
    base_lr: 0.01
    momentum: 0.9
    lr_policy: "step"
    gamma: 0.9
    stepsize: 1000
    • solver.prototxt
    net: "models/bvlc_alexnet/train_val.prototxt"
    # 每次测试时进行1000次迭代
    test_iter: 1000
    # 每进行1000次训练执行一次测试
    test_interval: 1000
    base_lr: 0.01
    lr_policy: "step"
    gamma: 0.1
    stepsize: 100000
    display: 20
    max_iter: 450000
    momentum: 0.9
    weight_decay: 0.0005
    snapshot: 10000
    snapshot_prefix: "models/bvlc_alexnet/caffe_alexnet_train"
    solver_mode: GPU

    参考资料

    1. http://www.cnblogs.com/denny402/p/5074049.html
    2. https://github.com/BVLC/caffe/wiki/Solver-Prototxt
    3. http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe
  • 相关阅读:
    【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数
    oracle死锁解决经常用法(屡试不爽)
    10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
    程序员再回首
    mysql 下载
    BestCoder Round #4 Miaomiao's Geometry (暴力)
    SDUT 1941-Friday the Thirteenth(水)
    小白高速变大神,零基础菜鸟应该怎么学编程
    【精】iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)
    无线路由器硬件配置參数 NetGear篇
  • 原文地址:https://www.cnblogs.com/sddai/p/10202140.html
Copyright © 2011-2022 走看看