首页 > 资讯 > > 正文

Pytorch中的model.train() 和 model.eval() 原理与用法解析|滚动

来源:脚本之家 2023-04-14 05:48:13
目录
Pytorch中的model.train() 和 model.eval() 原理与用法一、两种模式二、功能1. model.train()2. model.eval()3. 总结与对比三、Dropout 简介补充:pytroch:model.train()、model.eval()的使用一、model.train、model.eval1.model.train和model.eval放在代码什么位置2.model.train和model.eval有什么作用3.为什么主要区别在于BN层和dropout层4.BN层和dropout层的作用

Pytorch中的model.train() 和 model.eval() 原理与用法

一、两种模式

pytorch可以给我们提供两种方式来切换训练和评估(推断)的模式,分别是:model.train()model.eval()

一般用法是:在训练开始之前写上 model.trian() ,在测试时写上 model.eval() 。


(资料图片)

二、功能

1. model.train()

在使用 pytorch 构建神经网络的时候,训练过程中会在程序上方添加一句model.train(),作用是 启用 batch normalization 和 dropout

如果模型中有BN层(Batch Normalization)和 Dropout ,需要在 训练时添加 model.train()。

model.train() 是保证 BN 层能够用到 每一批数据的均值和方差。对于 Dropout,model.train() 是 随机取一部分网络连接来训练更新参数。

2. model.eval()

model.eval()的作用是 不启用 Batch Normalization 和 Dropout

如果模型中有 BN 层(Batch Normalization)和 Dropout,在 测试时添加 model.eval()。

model.eval() 是保证 BN 层能够用 全部训练数据的均值和方差,即测试过程中要保证 BN 层的均值和方差不变。对于 Dropout,model.eval() 是利用到了 所有网络连接,即不进行随机舍弃神经元。

为什么测试时要用 model.eval() ?

训练完 train 样本后,生成的模型 model 要用来测试样本了。在 model(test) 之前,需要加上model.eval(),否则的话,有输入数据,即使不训练,它也会改变权值。这是 model 中含有 BN 层和 Dropout 所带来的的性质。

eval() 时,pytorch 会自动把 BN 和 DropOut 固定住,不会取平均,而是用训练好的值。
不然的话,一旦 test 的 batch_size 过小,很容易就会被 BN 层导致生成图片颜色失真极大。
eval() 在非训练的时候是需要加的,没有这句代码,一些网络层的值会发生变动,不会固定,你神经网络每一次生成的结果也是不固定的,生成质量可能好也可能不好。

也就是说,测试过程中使用model.eval(),这时神经网络会 沿用 batch normalization 的值,而并 不使用 dropout

3. 总结与对比

如果模型中有 BN 层(Batch Normalization)和 Dropout,需要在训练时添加 model.train(),在测试时添加 model.eval()。

其中 model.train() 是保证 BN 层用每一批数据的均值和方差,而 model.eval() 是保证 BN 用全部训练数据的均值和方差;

而对于 Dropout,model.train() 是随机取一部分网络连接来训练更新参数,而 model.eval() 是利用到了所有网络连接。

三、Dropout 简介

dropout 常常用于抑制过拟合。

设置Dropout时,torch.nn.Dropout(0.5),这里的 0.5 是指该层(layer)的神经元在每次迭代训练时会随机有 50% 的可能性被丢弃(失活),不参与训练。也就是将上一层数据减少一半传播。

参考链接

PyTorch中train()方法的作用是什么【pytorch】model.train()和model.evel()的用法pytorch中net.eval() 和net.train()的使用Pytorch学习笔记11----model.train()与model.eval()的用法、Dropout原理、relu,sigmiod,tanh激活函数、nn.Linear浅析、输出整个tensor的方法好文:Pytorch:model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别

补充:pytroch:model.train()、model.eval()的使用

前言:最近在把两个模型的代码整合到一起,发现有一个模型的代码整合后性能大不如前,但基本上是源码迁移,找了一天原因才发现是因为model.eval()和model.train()放错了位置!!!故在此介绍一下pytroch框架下model.train()、model.eval()的作用和不同点。

一、model.train、model.eval

1.model.train和model.eval放在代码什么位置

简单的说:model.train放在网络训练前,model.eval放在网络测试前。

常见的位置摆放错误(也是我犯的错误)有把model.train()放在for epoch in range(epoch):前面,同时在test或者val(测试或者评估函数)中只放置model.eval,这就导致了只有第一个epoch模型训练是使用了model.train(),之后的epoch模型训练时都采用model.eval().可能会影响训练好模型的性能。
修改方式:可以在test函数里return前面添加model.train()或者把model.train()放到for epoch in range(epoch):语句下面。

model.train()
for epoch in range(epoch):
    for train_batch in train_loader:
        ...
    zhibiao = test(epoch, test_loader, model)
        
def test(epoch, test_loader, model):
    model.eval()
    for test_batch in test_loader:
        ...
    return zhibiao

2.model.train和model.eval有什么作用

model.train()和model.eval()的区别主要在于Batch NormalizationDropout两层。
如果模型中有BN层(Batch Normalization)和Dropout,在测试时添加model.eval()。model.eval()是保证BN层能够用全部训练数据的均值和方差,即测试过程中要保证BN层的均值和方差不变。对于Dropout,model.eval()是利用到了所有网络连接,即不进行随机舍弃神经元。

下面是model.train 和model.eval的源码,可以看到是利用self.training = mode来判断是使用train还是eval。这个参数将传递到一些常用层,比如dropout、BN层等。

def train(self: T, mode: bool = True) -> T:
        r"""Sets the module in training mode.

        This has any effect only on certain modules. See documentations of
        particular modules for details of their behaviors in training/evaluation
        mode, if they are affected, e.g. :class:`Dropout`, :class:`BatchNorm`,
        etc.

        Args:
            mode (bool): whether to set training mode (``True``) or evaluation
                         mode (``False``). Default: ``True``.

        Returns:
            Module: self
        """
        self.training = mode
        for module in self.children():
            module.train(mode)
        return self

    def eval(self: T) -> T:
        r"""Sets the module in evaluation mode.

        This has any effect only on certain modules. See documentations of
        particular modules for details of their behaviors in training/evaluation
        mode, if they are affected, e.g. :class:`Dropout`, :class:`BatchNorm`,
        etc.

        This is equivalent with :meth:`self.train(False) `.

        Returns:
            Module: self
        """
        return self.train(False)

拿dropout层的源码举例,可以看到传递了self.training这个参数。

class Dropout(_DropoutNd):
    r"""During training, randomly zeroes some of the elements of the input
    tensor with probability :attr:`p` using samples from a Bernoulli
    distribution. Each channel will be zeroed out independently on every forward
    call.

    This has proven to be an effective technique for regularization and
    preventing the co-adaptation of neurons as described in the paper
    `Improving neural networks by preventing co-adaptation of feature
    detectors`_ .

    Furthermore, the outputs are scaled by a factor of :math:`\frac{1}{1-p}` during
    training. This means that during evaluation the module simply computes an
    identity function.

    Args:
        p: probability of an element to be zeroed. Default: 0.5
        inplace: If set to ``True``, will do this operation in-place. Default: ``False``

    Shape:
        - Input: :math:`(*)`. Input can be of any shape
        - Output: :math:`(*)`. Output is of the same shape as input

    Examples::

        >>> m = nn.Dropout(p=0.2)
        >>> input = torch.randn(20, 16)
        >>> output = m(input)

    .. _Improving neural networks by preventing co-adaptation of feature
        detectors: https://arxiv.org/abs/1207.0580
    """

    def forward(self, input: Tensor) -> Tensor:
        return F.dropout(input, self.p, self.training, self.inplace)


3.为什么主要区别在于BN层和dropout层

在BN层中,主要涉及到四个需要更新的参数,分别是running_mean,running_var,weight,bias。这里的weight,bias是Pytorch官方实现中的叫法,有点误导人,其实weight就是gamma,bias就是beta。当然它这样的叫法也符合实际的应用场景。其实gamma,beta就是对规范化后的值进行一个加权求和操作running_mean,running_var是当前所求得的所有batch_size下的均值和方差,每经过一个mini_batch我们都会更新running_mean,running_var.为什么要更新它?因为测试的时候,往往是一个一个的图像feed至网络的,如果你在这里对其进行计算均值方差显然是不合理的,所以model.eval()这个语句就是控制BN层中的running_mean,running_std不更新。采用训练结束后的running_mean,running_std来规范化该张图像。

dropout层在训练过程中会随机舍弃一些神经元用来提高性能,但测试过程中如果还是测试的模型还是和训练时一样随机舍弃了一些神经元(不是原模型)这就和测试的本意相违背。因为测试的模型应该是我们最终得到的模型,而这个模型应该是一个完整的模型。

4.BN层和dropout层的作用

既然都讲到这了,不了解一些BN层和dropout层的作用就说不过去了。
BN层的原理和作用建议读一下这篇博客:神经网络中BN层的原理与作用

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。

大规模的神经网络有两个缺点:费时、容易过拟合

Dropout的出现很好的可以解决这个问题,每次做完dropout,相当于从原始的网络中找到一个更瘦的网络。因而,对于一个有N个节点的神经网络,有了dropout后,就可以看做是2^n个模型的集合了,但此时要训练的参数数目却是不变的,这就解决了费时的问题。

将dropout比作是有性繁殖,将基因随机进行拆分,可以将优秀的基因传下来,并且降低基因之间的联合适应性,使得复杂的大段大段基因联合适应性变成比较小的一个一个小段基因的联合适应性。

dropout也能达到同样的效果,它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,达到好的效果。消除减弱了神经元节点间的联合适应性,增强了泛化能力。

参考链接

pytorch中model.train()和model.eval()的区别
BN层(Pytorch)
神经网络中BN层的原理与作用————这篇博客写的贼棒
深度学习中Dropout的作用和原理

到此这篇关于Pytorch中的model.train()和model.eval()原理与用法的文章就介绍到这了,更多相关Pytorchmodel.train()和model.eval()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

x
推荐阅读

Pytorch中的model.train() 和 model.eval() 原理与用法解析|滚动

2023-04-14 05:48:13

【世界聚看点】评测vivo S5怎么样 爱自拍的妹子的最佳选择

2023-04-14 02:50:49

房屋租赁如何合理避税呢_房屋租赁如何合理避税 焦点报道

2023-04-13 22:41:07

【天天速看料】中南粮科院拟增资600万元,金健米业持股比例将下滑

2023-04-13 21:09:26

棽取名什么寓意起名_棽-环球热门

2023-04-13 20:05:01

天天日报丨关于星期四海能转债申购指南

2023-04-13 19:06:15

【报资讯】茶陵:“茶乡夜话”共话思政教育

2023-04-13 18:06:50

2-0和1-0!欧冠4强已浮现:皇马米兰有望会师,意甲或成最大赢家-时讯

2023-04-13 17:06:49

第一太平戴维斯:一季度深圳甲级写字楼平均租金环比下跌0.4% 环球焦点

2023-04-13 16:15:53

宁波精达(603088)4月13日主力资金净卖出1099.42万元

2023-04-13 15:28:29
相关新闻

Pytorch中的model.train() 和 model.eval() 原理与用法解析|滚动

2023-04-14 05:48:13

【世界聚看点】评测vivo S5怎么样 爱自拍的妹子的最佳选择

2023-04-14 02:50:49

房屋租赁如何合理避税呢_房屋租赁如何合理避税 焦点报道

2023-04-13 22:41:07

【天天速看料】中南粮科院拟增资600万元,金健米业持股比例将下滑

2023-04-13 21:09:26

棽取名什么寓意起名_棽-环球热门

2023-04-13 20:05:01

天天日报丨关于星期四海能转债申购指南

2023-04-13 19:06:15

【报资讯】茶陵:“茶乡夜话”共话思政教育

2023-04-13 18:06:50

2-0和1-0!欧冠4强已浮现:皇马米兰有望会师,意甲或成最大赢家-时讯

2023-04-13 17:06:49

第一太平戴维斯:一季度深圳甲级写字楼平均租金环比下跌0.4% 环球焦点

2023-04-13 16:15:53

宁波精达(603088)4月13日主力资金净卖出1099.42万元

2023-04-13 15:28:29

迅销(06288)4月13日下午起短暂停牌 待刊发中期业绩公告

2023-04-13 14:53:44

焦点快播:长安汽车(000625):自主第二 强产品力有望托底业绩稳定性

2023-04-13 13:41:26

中牟县狼城岗镇部署开展违法违规占用耕地案件以案促改工作

2023-04-13 12:25:56

海外情报:曼联1-0塞维利亚_当前播报

2023-04-13 11:30:58

各地公安交通管理部门开展“春季守护行动” 查处公路严重交通违法行为77.6万起-当前观点

2023-04-13 10:46:25

当前资讯!强信心·开新局丨打好“优势牌” 念好“特色经”——河北冀中部分县域特色产业集群走访记

2023-04-13 10:16:18

期市早评:能源类今多强势20230413|每日精选

2023-04-13 09:05:36

全球热头条丨湖南裕能去年营收超400亿 宁德时代比亚迪为前两大客户

2023-04-13 08:24:22

全球今热点:又一位美女明星不幸去世,年仅26岁,被发现陈尸家中,死因却成谜

2023-04-13 06:56:16

当前要闻:天芒传奇三大神器 天芒传奇

2023-04-13 05:10:27

圣瓦伦丁家具介绍(圣瓦伦丁老板自杀)

2023-04-13 01:13:58

大武口区消防救援大队持续开展校园消防安全教育活动 环球快播报

2023-04-12 22:22:09

中国—东盟自贸区3.0版第二轮谈判在泰国举行 焦点信息

2023-04-12 21:15:08

长期吃红豆薏米的害处_长期吃红豆的害处

2023-04-12 19:47:48

最新资讯:外交部领事司司长吴玺会见菲律宾驻华大使吉米

2023-04-12 18:41:34

世界讯息:大龙虾多少钱一斤活的_大龙虾多少钱一斤

2023-04-12 17:50:27

将于上海车展首发亮相 一汽奔腾T90渲染图发布 世界消息

2023-04-12 16:59:31

广州知识产权法院发布2022年度诉前调解十佳典型案例

2023-04-12 16:16:35

汪清:大棚蘑菇获丰收 特色种植助振兴 速看

2023-04-12 14:24:51

南昌首届金花户外运动节滑翔伞邀请赛时间+地点+内容 天天快资讯

2023-04-12 13:03:12

环球热头条丨小时工辞职不批按旷工算合法吗

2023-04-12 12:13:50

实时焦点:广旅桂林投资公司党委书记庞华:聚力打造文旅IP 完善产业链布局

2023-04-12 11:10:46

行而不辍,未来可期——融通高中A-LEVEL班优秀毕业生饶子瑶|环球速看料

2023-04-12 10:50:12

北京市气象台2023年4月12日09时55分发布沙尘蓝色预警信号|环球速递

2023-04-12 09:52:30

《欢乐颂》系列越拍越烂,为何还要一拍再拍|环球热闻

2023-04-12 09:03:14

娄底市贺国平心理健康名师工作室举行 “青少年学习能力提升”主题送教活动

2023-04-12 08:23:39

焦点热议:香蕉水是什么

2023-04-12 06:59:53

2023淘宝天猫家装家居策略发布会召开 目标打造30个年成交过亿直播间-焦点要闻

2023-04-12 05:03:09

环球快资讯:楚雄州公安局交警支队“四强化”全面开展2023年道路交通事故预防“减量控大”第二季度集中攻坚行动工作

2023-04-12 00:14:54

即时看!今天最新消息 吉利关联公司退出集度汽车?回应:百度和吉利所持股份不变

2023-04-11 22:00:57

天天信息:英维克(002837)年报点评:数据中心储能双重驱动成长 液冷散热加速渗透

2023-04-11 20:33:54

2023青岛凤凰音乐节票档有哪些? 观天下

2023-04-11 19:07:25

【焦点热闻】穗恒运A(000531.SZ):一季度预盈5500万元-8200万元 同比扭亏

2023-04-11 18:20:01

新一轮政策资助即将到账!青岛492个标准化资助奖励项目进入专家评审_世界最新

2023-04-11 17:41:08

全球经济增长预测上调 国际黄金日K收阴

2023-04-11 16:48:19

沃华医药:公司目前有沃华心可舒片、骨疏康胶囊/颗粒、荷丹片/胶囊、脑血疏口服液四大独家医保支柱产品、15个独家产品、162个药品批准文号,构筑了强大的独家产品线

2023-04-11 15:55:40

永和智控:园区厂房洁净车间已装修完毕,厂房预计4月下旬交付使用,预计5月中旬进行试生产阶段 速看料

2023-04-11 14:54:05

【环球聚看点】市场对供需形势保持观望 国际油价10日下跌

2023-04-11 14:01:09

如何使用Beats耳机蓝牙耳机

2023-04-11 12:48:02

株硬荣获“十大科技创新技术”奖

2023-04-11 11:52:43

艺术 | 《鸟鸣录》——孙初个展在鸟巢艺术空间开幕

2023-04-11 11:19:02

沙滩排球世界巡回赛伊塔佩马站:薛晨/夏欣怡夺冠_当前看点

2023-04-11 10:15:26

速食食品遭遇“命运”瓶颈,休闲食品逻辑真适用做餐饮?|天天热文

2023-04-11 09:57:32

今日热搜:被骗出国做“杀猪盘”小伙自述九死一生

2023-04-11 08:56:47

【环球播资讯】周杰伦起诉网易不正当竞争 或与后者旗下游戏擅自赠送其演唱会门票有关

2023-04-11 07:40:15

艾雷萨拉斯皇家徽记_盗贼的 ldquo 埃雷萨拉斯皇家徽记 rdquo 怎么拿 快看点

2023-04-11 06:10:20

【天天播资讯】海森药业:合作研发方员工尚未离职先入股 否认合作研发产品规模化使用或“露马脚”

2023-04-11 01:28:59

天天热头条丨容知日新:2022年净利润同比增长42.86% 拟10转4.8派5.4元

2023-04-10 21:55:21

天天快资讯丨访华之后,马克龙对于“美国陷阱”的认识更深刻了

2023-04-10 20:42:55

全球报道:2023年河南省服务型制造示范企业(平台)拟确定名单公示

2023-04-10 19:14:01

市场日报|A股迎来全面注册制!首批10只新股集体暴涨;遭华为「打脸」,这只股票开盘一字跌停;AI概念大幅回落,三六零跌停 天天观焦点

2023-04-10 18:25:56

文旅部:建立舆情监测和迅速响应机制

2023-04-10 16:40:47

三年级第二课生字词语组词 全球微资讯

2023-04-10 15:53:32

Android 手机在这方面可能比 iPhone 16 更好

2023-04-10 13:43:51

华懋科技:徐州博康已有多款高端光刻胶产品通过多家下游客户验证并获取订单-天天精选

2023-04-10 12:30:49

2023杨凌农科城马拉松赛鸣枪开跑 当前播报

2023-04-10 11:32:27

南财基金通·股票型基金收益排行榜(4月7日) 每日速看

2023-04-10 11:01:45

我国构建世界首个番茄超泛基因组 独家

2023-04-10 09:51:25

马克龙表态:欧洲须减少对美依赖 避免卷入中美台湾问题对抗

2023-04-10 08:58:04

95后首席焊工:用技术突围无数奖牌 天天快讯

2023-04-10 08:02:47

华为:没有任何意愿及可能与新东方新材料合资运营TD TECH

2023-04-10 06:13:29

天天时讯:半场-马丁内利传射热苏斯头槌萨拉赫破门 阿森纳2-1领先利物浦

2023-04-10 01:04:35

总台海峡时评:坚决有力回击一切“台独”分裂行径! 当前速看

2023-04-09 21:40:12

巴媒:卢拉访华团再添12名国会议员随行,参议院议长也将加入-世界热推荐

2023-04-09 19:42:24

环球即时:特斯拉储能超级工厂项目正式落沪

2023-04-09 17:59:54

新乡赛再爆大冷!2位世界冠军出局,林诗栋进16强为国乒第一人

2023-04-09 16:10:20

最新:东部战区组织环台岛战备警巡和演习 军事专家:或成今后惩戒“台独”新模式

2023-04-09 14:39:01

巴以局势骤然升级,美国防长致电以色列防长表达支持

2023-04-09 10:45:42

买房看房的时候需要了解小区的绿化率与容积率

2023-04-09 09:02:30

打造“互联网 就业”新模式 多方协同提高直播带岗服务品质 每日速读

2023-04-09 06:52:13

ssr是什么意思形容女生_ssr是什么_天天热讯

2023-04-09 03:47:15

产氢燃料电池 现代成立氢燃料电池公司 最新快讯

2023-04-08 22:14:08

热消息:寿县寿春镇一处商业用房即将拍卖,起拍价5472576元!

2023-04-08 20:06:04

推婴儿车上扶梯,监控拍下惊险一幕……_全球报资讯

2023-04-08 18:04:31

许庄街道网格中心开展“缅怀革命先烈 传承红色精神”祭扫活动|环球观速讯

2023-04-08 16:33:13

窒息灭火法主要工具_窒息灭火法主要工具是什么 今日观点

2023-04-08 14:49:42

天天即时看!7.08亿!姆巴佩为钱“背叛”皇马:本可签下哈兰德,巨头划下红线

2023-04-08 13:06:20

鼓励学生的演讲主题有哪些_鼓励学生学习演讲稿

2023-04-08 11:08:22

中国工程院院士潘云鹤:AIGC会转向更有价值的应用领域建议及时布局 世界速递

2023-04-08 09:57:58

新消息丨53场重点文旅活动、21条精品春游线路…… 2023西安春季文化旅游活动启幕

2023-04-08 08:03:27

每日热闻!拒绝退役!3抢断5三分,35岁还能打!别嫌老,他可是NBA三冠王

2023-04-08 06:11:44

对于兰帕德重新担任切尔西主帅,科瓦契奇表示:“这... 天天观速讯

2023-04-08 02:10:28

全球百事通!韩美林生肖艺术展在青岛举行,韩美林:我对中华文化有一种续命的责任

2023-04-07 22:10:20

环球快报:五一出境游订单同比暴增18倍,银行集体打起金融牌

2023-04-07 19:42:35

【速看料】成长过程中最大的礼物

2023-04-07 18:16:28

顺应音乐高考变化 提升学生文化素养

2023-04-07 18:36:18

吉林大学2023年录取多少分(吉林大学排名榜及录取线) 最新资讯

2023-04-07 17:20:38

每日速看!4月云开日出,运势高涨,做事得心应手的生肖,财气四面八方涌来

2023-04-07 16:45:54

地产股爆发!天保基建中交地产涨停

2023-04-07 15:55:55

异动快报:朗玛信息(300288)4月7日13点26分触及涨停板 全球播报

2023-04-07 14:53:38