(深入理解)model.eval() 、model.train()以及torch.no_grad() 的区别
文章目录
- 简要版解释
- 深入版解释
简要版解释
在PyTorch中进行validation或者test的时侯,会使model.eval()
切换到测试模式,在该模式下,model.training=Fasle
,其作用是:1.dropout层会让所有的激活单元都通过,2.batchnorm层会停止计算和更新mean和var,直接使用在训练阶段已经学出的mean和var值。
但是该模式不会影响各层的gradient计算行为,即gradient计算和存储与training模式一样,只是不进行反向传播(back probagation)
而model.train()
则不同,在train模式下,dropout网络层会按照设定的参数p设置保留激活单元的概率(保留概率=p); batchnorm层会一直计算数据的mean和var等参数并更新。
注意:定义了模型之后,默认model.training=True。
with torch.no_grad()
则主要是用于停止autograd模块的工作,以起到加速和节省显存的作用,也就是不保存计算图,默认是保存的。
深入版解释
上面这些东西只是非常浅层的解释,但是对于技术控恐怕难以满足,尤其是你打算长期做这一块,而且经常做模型训练效果分析的同学来说,上面这个解释是完全不够的。
对于model.eval() 和model.train()上面已经说了,有一些深度学习中的机制例如batchnorm在这两个模式下,工作模式是不同的。怎么个不同呢?我们以batchnorm为例,可以参考BN中的对应章节来揭开batchnorm的用法以及其工作模式。
对于torch.no_grad(),你甚至不知道上面是什么东西,说得非常抽象,这个东西,你得先看看计算图是什么?你就明白了。见计算图。
(深入理解)model.eval() 、model.train()以及torch.no_grad() 的区别相关推荐
- 【Pytorch】model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别
model.train() 启用 Batch Normalization 和 Dropout 如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model. ...
- Pytorch:model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别
model.train()和model.eval()的区别主要在于Batch Normalization和Dropout两层. model.train() 官方文档 启用 Batch Normaliz ...
- Pytorch: model.eval(), model.train() 讲解
文章目录 1. model.eval() 2. model.train() 两者只在一定的情况下有区别:训练的模型中含有dropout 和 batch normalization 1. model.e ...
- pytorch的训练测试流程总结,以及model.evel(), model.train(),torch.no_grad()作用
pytorch的 model.eval()和model.train()作用 pytorch中model.train()和model.eval()的区别主要在于Batch Normalization和D ...
- Pytorch的model.train() model.eval() torch.no_grad() 为什么测试的时候不调用loss.backward()计算梯度还要关闭梯度
使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval model.train() 启用 BatchNormalization 和 Dropout 告诉我们的网络,这 ...
- 【Pytorch】model.train() 和 model.eval() 原理与用法
文章目录 一.两种模式 二.功能 1. model.train() 2. model.eval() 为什么测试时要用 model.eval() ? 3. 总结与对比 三.Dropout 简介 参考链接 ...
- model.train()、model.eval()、optimizer.zero_grad()、loss.backward()、optimizer.step作用及原理详解【Pytorch入门手册】
1. model.train() model.train()的作用是启用 Batch Normalization 和 Dropout. 如果模型中有BN层(Batch Normalization)和D ...
- model.train()和model.eval()的用法及model.eval()可能导致测试准确率的下降
问题导入: 一般我们在训练模型时会在前面加上:model.train() 在测试模型时会在前面使用:model.eval() 但是在某次使用网络测试模型时,训练准确率很高,但测试准确率很低,排查了各种 ...
- Pytorch中model.eval()的作用分析
model.eval() model.eval() 作用等同于 self.train(False) 简而言之,就是评估模式.而非训练模式. 在评估模式下,batchNorm层,dropout层等用于优 ...
最新文章
- JAVA_Java常用核心包(概念)
- MR程序的几种提交运行模式
- Leetcode每日一题:1248.count-number-of-nice-subarrays(统计[优美子数组])
- oracle数据库top用法,Oracle TOP SQLHIT
- 扬州大学广陵学院c语言试卷,扬州大学广陵学院交直流调速复习题答案(试卷)
- FPGA实现“打字机”(VGA UART)
- 发现美,欣赏美,美之我见
- hustoj 忘记admin密码的解决方案
- 空洞卷积(Dilated Convolution)简介
- 在C#中如何将多个rtf文件内容组合在一起用一个rtf文件保存?
- 【LOJ】#3090. 「BJOI2019」勘破神机
- 【案例分享】项目施工进度报告 - 树形报表
- 又火了一本神书,看小说就能学 JavaScript?
- 小鸟云:浅谈5 种典型的云原生架构反模式
- 2021烟台大学计算机考研群,2021烟台大学研究生分数线一览表(含2019-2020历年复试)...
- 推荐算法之协同过滤和基于内容推荐
- Show me Why 软件破解教程目录 与 试看教程 更新工具和教程 (2015-04-22 更新试看链接)
- aba会导致问题_ABA问题的本质及其解决办法
- 通讯录管理系统—优化版 (C语言 期末大作业 课程设计)
- 自动紧急制动(AEB)
热门文章
- 书评 | 产品的事可以简化为两件,产品团队有两种...
- 你未必知道的CSS故事:揭开leading的面纱
- Analysis Services基础知识——深入SQL Server 2008
- 这个寒冬,如何让我们的身价翻倍?
- 《细胞》重磅!科学家培育全球首个人类自组织心脏类器官,可自主跳动能自我修复...
- AI一键去纹身,几秒钟让你看见明星「真面目」
- 剑指offer:矩阵中的路径
- 检索、问答、情感分析产业范例分享,代码模型全开源太香了!
- 有趣|“手工耿”史诗级大作:可以横着走的概念车!罗永浩点赞,网友喊话雷军投资...
- 国内研究生不小心跟了一个水货导师是什么样的体验?