文章目录

  • 简要版解释
  • 深入版解释

简要版解释

在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() 的区别相关推荐

  1. 【Pytorch】model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别

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

  2. Pytorch:model.train()和model.eval()用法和区别,以及model.eval()和torch.no_grad()的区别

    model.train()和model.eval()的区别主要在于Batch Normalization和Dropout两层. model.train() 官方文档 启用 Batch Normaliz ...

  3. Pytorch: model.eval(), model.train() 讲解

    文章目录 1. model.eval() 2. model.train() 两者只在一定的情况下有区别:训练的模型中含有dropout 和 batch normalization 1. model.e ...

  4. pytorch的训练测试流程总结,以及model.evel(), model.train(),torch.no_grad()作用

    pytorch的 model.eval()和model.train()作用 pytorch中model.train()和model.eval()的区别主要在于Batch Normalization和D ...

  5. Pytorch的model.train() model.eval() torch.no_grad() 为什么测试的时候不调用loss.backward()计算梯度还要关闭梯度

    使用PyTorch进行训练和测试时一定注意要把实例化的model指定train/eval model.train() 启用 BatchNormalization 和 Dropout 告诉我们的网络,这 ...

  6. 【Pytorch】model.train() 和 model.eval() 原理与用法

    文章目录 一.两种模式 二.功能 1. model.train() 2. model.eval() 为什么测试时要用 model.eval() ? 3. 总结与对比 三.Dropout 简介 参考链接 ...

  7. model.train()、model.eval()、optimizer.zero_grad()、loss.backward()、optimizer.step作用及原理详解【Pytorch入门手册】

    1. model.train() model.train()的作用是启用 Batch Normalization 和 Dropout. 如果模型中有BN层(Batch Normalization)和D ...

  8. model.train()和model.eval()的用法及model.eval()可能导致测试准确率的下降

    问题导入: 一般我们在训练模型时会在前面加上:model.train() 在测试模型时会在前面使用:model.eval() 但是在某次使用网络测试模型时,训练准确率很高,但测试准确率很低,排查了各种 ...

  9. Pytorch中model.eval()的作用分析

    model.eval() model.eval() 作用等同于 self.train(False) 简而言之,就是评估模式.而非训练模式. 在评估模式下,batchNorm层,dropout层等用于优 ...

最新文章

  1. JAVA_Java常用核心包(概念)
  2. MR程序的几种提交运行模式
  3. Leetcode每日一题:1248.count-number-of-nice-subarrays(统计[优美子数组])
  4. oracle数据库top用法,Oracle TOP SQLHIT
  5. 扬州大学广陵学院c语言试卷,扬州大学广陵学院交直流调速复习题答案(试卷)
  6. FPGA实现“打字机”(VGA UART)
  7. 发现美,欣赏美,美之我见
  8. hustoj 忘记admin密码的解决方案
  9. 空洞卷积(Dilated Convolution)简介
  10. 在C#中如何将多个rtf文件内容组合在一起用一个rtf文件保存?
  11. 【LOJ】#3090. 「BJOI2019」勘破神机
  12. 【案例分享】项目施工进度报告 - 树形报表
  13. 又火了一本神书,看小说就能学 JavaScript?
  14. 小鸟云:浅谈5 种典型的云原生架构反模式
  15. 2021烟台大学计算机考研群,2021烟台大学研究生分数线一览表(含2019-2020历年复试)...
  16. 推荐算法之协同过滤和基于内容推荐
  17. Show me Why 软件破解教程目录 与 试看教程 更新工具和教程 (2015-04-22 更新试看链接)
  18. aba会导致问题_ABA问题的本质及其解决办法
  19. 通讯录管理系统—优化版 (C语言 期末大作业 课程设计)
  20. 自动紧急制动(AEB)

热门文章

  1. 书评 | 产品的事可以简化为两件,产品团队有两种...
  2. 你未必知道的CSS故事:揭开leading的面纱
  3. Analysis Services基础知识——深入SQL Server 2008
  4. 这个寒冬,如何让我们的身价翻倍?
  5. 《细胞》重磅!科学家培育全球首个人类自组织心脏类器官,可自主跳动能自我修复...
  6. AI一键去纹身,几秒钟让你看见明星「真面目」
  7. 剑指offer:矩阵中的路径
  8. 检索、问答、情感分析产业范例分享,代码模型全开源太香了!
  9. 有趣|“手工耿”史诗级大作:可以横着走的概念车!罗永浩点赞,网友喊话雷军投资...
  10. 国内研究生不小心跟了一个水货导师是什么样的体验?