如下截取一部分train.prototxt的片段:

layer {
  name: "conv2_em/bn"
  type: "BatchNorm"
  bottom: "conv2_em"
  top: "conv2_em"
  param {
    lr_mult: 0
    decay_mult: 0
  }
  param {
    lr_mult: 0
    decay_mult: 0
  }
  param {
    lr_mult: 0
    decay_mult: 0
  }
}

可以看到这一层是batchnormal层,其中的参数设置,三个param中的lr_mult和decay_mult都设置为0。

原因如下:

caffe中的batchnormal层中有三个参数(具体代表什么自行去caffe源码中看吧:均值、方差和滑动系数),训练时这三个参数是通过当前的数据计算得到的,并且不通过反向传播更新,因此必须将lr_mult和decay_mult都设置为0,因为caffe中这两个参数缺省值是默认为1;如果为1,则会通过反向传播更新该层的参数,这显然是错误的做法。

此外,对于参数use_global_stats:如果为真,则使用保存的均值和方差,否则采用滑动平均计算新的均值和方差。该参数缺省的时候,如果是测试阶段则等价为真,如果是训练阶段则等价为假。

moving_average_fraction:滑动平均的衰减系数,默认为0.999

eps:分母附加值,防止除以方差时出现除0操作,默认为1e-5(不同框架采用的默认值不一样)

更重要的一点:由于BN层中会做归一化处理,因此BN层前的那个卷积层应当将bias关闭,因为BN的操作会做一个减去均值的操作,因此卷积层有没有bias都会被这个减法操作去除掉,所以这时候bias不起作用,因此将其关闭可以减少参数量且不影响模型准确率。

22     convolution_param {
  23     num_output: 32
  24     bias_term: false
  25     pad: 1
  26     kernel_size: 3
  27     stride: 2
  28     weight_filler {
  29       type: "msra"
  30     }
  31   }

同时,由于caffe中,Scale层不需要对两个参数正则化,所以设置如下:

param {
lr_mult: 1
decay_mult: 0
}
param {
lr_mult: 1
decay_mult: 0
}

caffe中batchnormal层的param参数lr_mult和decay_mult都为0的原因相关推荐

  1. caffe中各层的作用

    caffe中各层的作用: 关于caffe中的solver: cafffe中的sover的方法都有: Stochastic Gradient Descent (type: "SGD" ...

  2. Caffe中BN层与CONV层的融合(merge_bn)

    半年前写的博客,今天发现没有发出去,还好本地有md的文档,决定重新发一下 毕竟网上来回抄袭的blog太多了,代码质量也莫得保证 今天需要用pytorch融合下bn层,写个脚本稍后再传到csdn上 原理 ...

  3. caffe中各个层——解析

    转自:http://www.cnblogs.com/denny402/p/5071126.html 所有的层都具有的参数,如name, type, bottom, top和transform_para ...

  4. Caffe中Convolution层

    层类型:Convolution  lr_mult: 学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr.如果有两个lr_mult, 则第一个表示权值的学习率 ...

  5. caffe中HDF5层及数据生成

    HDF 文件结构包括一个file id(文件号).至少一个 data descriptor (数据描述符).没有或多个 data element(数据内容)数据内容. file id (文件号)是一个 ...

  6. caffe中卷积层的实现

    在caffe中卷基层是通过矩阵相乘来实现的实现,直接计算卷积可以由下面的程序表示: 可以看到,这段程序循环嵌套多,时间复杂度高,而使用矩阵相乘的形式:很多现成的矩阵运算库,不重复"造轮子&q ...

  7. Caffe中Interp层的使用

    最近实验当中借鉴了FPN网络,由于FPN网络对图片shape有要求,采用了两种方式,其一是在data_layer.cpp中,对原图进行padding操作:其二是需要对特征图进行类似crop操作,使得两 ...

  8. caffe中常用层: BatchNorm层详解

    Batchnorm原理详解 前言:Batchnorm是深度网络中经常用到的加速神经网络训练,加速收敛速度及稳定性的算法,可以说是目前深度网络必不可少的一部分.  本文旨在用通俗易懂的语言,对深度学习的 ...

  9. Java中当被除数比除数小时为什么计算结果都为0?

    前段时间写项目时遇到了这个问题,现在记录一下,帮助已经入坑的各位早点儿出坑. 首先,要区分清楚什么是被除数.什么是除数,话不多说,直接上图: 比如100/50,其实就是100÷50,那么100就是被除 ...

最新文章

  1. 微信9年:张小龙指明方向,微信AI全面开放NLP能力
  2. 比较两个字符串是否相等
  3. STM32 电机教程 28 - ST MCLIB实战之 位置闭环控制
  4. 刚登录,有点感觉就想写下来
  5. Vue状态管理vuex
  6. 根据特殊EOF的序列判断比赛输赢(洛谷P1042题题解,Java语言描述)
  7. linux mv命令改名,Linux mv命令:移动文件或改名
  8. 2010年3月blog汇总:企业架构、团队管理
  9. C compiler test failed.
  10. 将DW数据窗口导出为EXCEL文件的方法(整理)
  11. 进销存系统设计说明书
  12. PHP图片高清晰度无损压缩
  13. 为什么中介哄抢租赁房源,你应该知道的真相?
  14. 女明星对比潮人HOLD姐的妖艳妆容
  15. 大数据分析:家庭教育的10个主要问题
  16. I2C | i2c_msg
  17. k8s高可用环境部署7(Dashboard and metrics)
  18. html5怎么做相册影集,手机怎么做相册影集
  19. java 量化指标_量化投资学习笔记13——各种指标的绘图、计算及交易策略
  20. 基于Python校园二手书籍交易系统设计与实现 开题报告

热门文章

  1. Jquery 组 tbale表格滚动条
  2. ppt转换成html 2010,如何把PowerPoint 2010另存为htm或mht等网页格式
  3. 计算机主板的安装与拆卸,Intel篇:如何拆除和存放CPU
  4. 腾讯加码社区团购引发热议 中小团购企业将迎战收割潮
  5. 手机密码不能简单设 要钱短信是因密码被盗
  6. 【设计模式】第5章·抽象工厂模式
  7. Chrome中的srcset
  8. C++求解一元一次方程——LeetCode 640
  9. iPhone 10.X 越狱后,抹除设备导致Cydia所有源无法安装使用彻底解决方案及遇到的问题
  10. 什么样的内容能够使读者产生共鸣?可以从这几个方面来看