Pytorch中关于BatchNorm2d的参数解释
作者:顾北向南 发布时间:2021-10-06 11:28:09
BatchNorm2d中的track_running_stats参数
如果BatchNorm2d的参数val,track_running_stats设置False,那么加载预训练后每次模型测试测试集的结果时都不一样;
track_running_stats设置为True时,每次得到的结果都一样。
running_mean和running_var参数
running_mean和running_var参数是根据输入的batch的统计特性计算的,严格来说不算是“学习”到的参数,不过对于整个计算是很重要的。
torch.nn.BatchNorm1d(num_features,
eps=1e-05,
momentum=0.1,
affine=True,
track_running_stats=True)
BatchNorm2d参数讲解
一般来说pytorch中的模型都是继承nn.Module类的,都有一个属性trainning指定是否是训练状态,训练状态与否将会影响到某些层的参数是否是固定的,比如BN层或者Dropout层。通常用model.train()指定当前模型model为训练状态,model.eval()指定当前模型为测试状态。
同时,BN的API中有几个参数需要比较关心的,一个是affine指定是否需要仿射,还有个是track_running_stats指定是否跟踪当前batch的统计特性。容易出现问题也正好是这三个参数:trainning,affine,track_running_stats。
其中的affine指定是否需要仿射,也就是是否需要上面算式的第四个,如果affine=False则γ=1,β=0 \gamma=1,\beta=0γ=1,β=0,并且不能学习被更新。一般都会设置成affine=True。
trainning和track_running_stats,track_running_stats=True表示跟踪整个训练过程中的batch的统计特性,得到方差和均值,而不只是仅仅依赖与当前输入的batch的统计特性。相反的,如果track_running_stats=False那么就只是计算当前输入的batch的统计特性中的均值和方差了。当在推理阶段的时候,如果track_running_stats=False,此时如果batch_size比较小,那么其统计特性就会和全局统计特性有着较大偏差,可能导致糟糕的效果。
来源:https://www.jianshu.com/p/a646cbc913b4


猜你喜欢
- 一、游戏展示所谓:开局一张图,后面全靠编。先放图片、动画展示一波。游戏玩法很简单,按空格猴子↑跳起来,躲开巨浪袭击,时间越
- python中日期类datetime功能比较强大,使用起来很方便,把常用的两种用法总结如下:from datetime import dat
- MySQL是关系型数据库中的明星,MongoDB是文档型数据库中的翘楚。下面通过一个设计实例对比一下二者:假设我们正在维护一个手机产品库,里
- 在任何有监督机器学习项目的模型构建阶段,我们训练模型的目的是从标记的示例中学习所有权重和偏差的最佳值。如果我们使用相同的标记示例来测试我们的
- 以前看过有人转换过的,当时仅仅惊叹了一下,就过去了,没有记下来,直至于用到的时候呢,开始到处找,找来找去都没有找不到痕迹了,心里也就郁郁寡欢
- 从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数。可是,在协程中, yield 通常出现在表达式的右边(例如, da
- 此模块允许你输出类似Unix cal程序的日历,并提供与日历相关的其他有用功能。值得注意的是,默认情况下,这些日历将星期一作为一
- 1、实现目标编写一个命令行通讯录程序,可以添加、查询、删除通讯录好友及电话2、实现方法创建一个类来表示一个人的信息。使用字典存储每个人的对象
- 本文实例为大家分享了Vue实现导航栏菜单的具体代码,供大家参考,具体内容如下这里是刚学习vue的时候,没有用vue的任何UI组件库写的导航栏
- 强大的group by 代码如下:select stdname, isnull(sum( case stdsubject whe
- 要真说出来哪一个函数能够做得到,还真难。但我们可用下面的代码来进行识别,返回“假”即偶数,返回“真”则奇数: function&n
- 本文实例讲述了js控制div弹出层实现方法。分享给大家供大家参考。具体分析如下:这是个功能很好,且容易调用和控制的弹出层。感兴趣的朋友可以调
- 本文实例讲述了Go语言结构体定义和使用方法。分享给大家供大家参考。具体分析如下:一个结构体(struct)就是一个字段的集合。(而 type
- 一、前言python在数组中随机取值有现成的方法,但是要给每个随机值被取到的概率加权重的话,可以参考下面这个方法二、实现方式import r
- 昨晚着手给个人博客增加网易微博的调用,在Opera下却出现了一个意想不到的问题。内容的展示,一开始是做成横向不间断滚动(现在已经改成纵向定时
- 深入理解 Python 虚拟机:集合(set)的实现原理及源码剖析在本篇文章当中主要给大家介绍在 cpython 虚拟机当中的集合 set
- 好多网友问起来,·深度学习网址导航·深度学习整站系统 的后台管理能否增加批量删除功能,如何加:就是列出N篇文章或网址信息,每篇文章或网址前有
- 本文实例讲述了python获得两个数组交集、并集、差集的房部分。分享给大家供大家参考。具体如下:1. 获取两个list 的交集#方法一:a=
- 目录前言typeof是否能正确判断类型?instanceof是否能正确判断类型?Object.prototype.toString.call
- python中,我们可以对列表、字符串、元祖中的元素进行排序,那对于字典中的元素可以排序吗?其实对于字典本身我们无法进行排序,但是我们可以对