【转载】 Caffe BN+Scale层和Pytorch BN层的对比
原文地址:
https://blog.csdn.net/elysion122/article/details/79628587
-------------------------------------------------------------------------------------------------
因为最近在将一个caffe的model移植到pytorch上,发现移植过去就没法收敛了,因此专门研究了一些细节。
batch normalization的公式如下:

caffe和pytorch在代码细节上略有不同,但是基本功能是一样的。
Caffe 是使用BN层和Scale层来实现Batch normalization 的,简单地说就是BN层用来计算方差均值,Scale层进行归一化,这个很多技术博客都已经分析过了。
其中BN层中有三个mult_lr:0比较奇怪,经过查资料,我的理解是BN层记录了三个数据:均值、方差、滑动系数,这三个数据不需要学习,仅仅需要根据进入网络的数据进行计算,因此设置为0。据说新版的caffe已经不需要专门设置这三个数据了。
scale可以设置是不是需要bias,应该表示的是需不需要 ββ
Pytorch的BN层实现了计算均值方差并且归一化的步骤,现在不同的版本参数略有不同,最新的 0.4.* 版本 多了一个参数。
class torch.nn.BatchNorm3d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
- momentum=0.001和caffe默认值0.999,应该是一个意思,只不过一个是计算的1-momentum。
affine表示要不要两个系数γ和βγ,β
track_running_stats是 0.4(版本) 新出的一个参数,据说是追踪var和mean的,目前不是很清楚作用,等明白了再来更新。
【转载】 Caffe BN+Scale层和Pytorch BN层的对比的更多相关文章
- caffe中使用python定义新的层
转载链接:http://withwsf.github.io/2016/04/14/Caffe-with-Python-Layer/ Caffe通过Boost中的Boost.Python模块来支持使用P ...
- Caffe学习系列(5):其它常用层及参数
本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置. 1.softmax-loss so ...
- 转 Caffe学习系列(5):其它常用层及参数
本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置. 1.softmax-loss so ...
- Caffe源码阅读(1) 全连接层
Caffe源码阅读(1) 全连接层 发表于 2014-09-15 | 今天看全连接层的实现.主要看的是https://github.com/BVLC/caffe/blob/master/src ...
- caffe中全卷积层和全连接层训练参数如何确定
今天来仔细讲一下卷基层和全连接层训练参数个数如何确定的问题.我们以Mnist为例,首先贴出网络配置文件: name: "LeNet" layer { name: "mni ...
- caffe怎么把全连接层转成convolutional层
caffe中有把fc层转化为conv层的,其实怎么看参数都是不变的,对alex模型来说,第一个fc层的参数是4096X9216,而conv的维度是4096x256x6x6,因此参数个数是不变的,只是需 ...
- 【转】Caffe初试(七)其它常用层及参数
本文讲解一些其它的常用层,包括:softmax-loss层,Inner Product层,accuracy层,reshape层和dropout层及它们的参数配置. 1.softmax-loss sof ...
- 动手学深度学习9-多层感知机pytorch
多层感知机 隐藏层 激活函数 小结 多层感知机 之前已经介绍过了线性回归和softmax回归在内的单层神经网络,然后深度学习主要学习多层模型,后续将以多层感知机(multilayer percetro ...
- 基础才是重中之重~Data层如何调用BLL层的方法,如果觉得奇怪请看本文章
回到目录 看似不伦不类 这个题目有点不伦不类,或者说有点伪模式了,不错,确实是这样,我们正确的开发思维是WEB层->BLL层->DATA层,每个层有对它下层的引用,下层不能引用上层,因为这 ...
随机推荐
- 利用tablespace特性将数据库移动到新磁盘
目前开发一台EC2的PostgreSQL服务器的磁盘空间已经严重不足,该磁盘非LVM,所以不考虑磁盘扩容方法,研发希望可以分区/data/02对应的/dev/xvdl1磁盘分担部分数据库的数据,这样也 ...
- linux -- 基于zookeeper搭建yarn的HA高可用集群
linux -- 基于zookeeper搭建yarn的HA高可用集群 实现方式:配置yarn-site.xml配置文件 <configuration> <property> & ...
- Liunx 更新环境时用到的命令
1.进入项目文件所在位置:cd/home/zhaorg/shelly62/apache-tomcat-7.0.5.2/bin 2.关闭服务:./shuntdown.sh或者 sh.shuntdown. ...
- android project
- InnoDB存储引擎表的主键
在InnoDB存储引擎中,表是按照主键顺序组织存放的.在InnoDB存储引擎表中,每张表都有主键(primary key),如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创 ...
- OllyDbg安装教程
1.下载 http://tools.pediy.com/windows/debuggers.htm 我们这里选择OllyDbg1.10下载 2.安装 解压下载的压缩包直接双击启动即可使用 3.插件安装 ...
- input text 在苹果微信浏览器中有上上阴影
box-shadow:0px 0px 0px rgba(0,0,0,0); -webkit-appearance:none;
- git merge branch
git branch look at your branches git branch newbranch git checkout newbrach do something git check ...
- C++解析三
类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行.构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void.构造函数可用于为某些成员变量设置初始 ...
- java高级⑴
1.之前我们学过 数组: 数组的特点: 01. 长度一旦被定义,不允许被改变 02. 在内存中开辟一连串连续的空间! 那么现在有一个需求: 让我们定义一个数组 来 保存 新闻信息!!! 问题: 01. ...