model.train()和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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3. B. Milena and Admirer(贪心、小结论、思维)

题目链接 B. Milena and Admirer 题意 给一个长度为 n n n的序列,我们通过操作使这个序列变成非递减序列 操作:对 a [ i ] a[i] a[i],我们将 a [ i ] a[i] a[i]删除,将 a [ i ] − x 、 x a[i]-x、x a[i]−x、x插入原位置&…

Oracle19c | 操作归纳

本篇目录 1. PDB 可插拔数据库1.1 创建 PDB 1. PDB 可插拔数据库 1.1 创建 PDB # oralce 19c 创建 pdb CREATE PLUGGABLE DATABASE pdb_name ADMIN USER username IDENTIFIED BY password; # oralce 19c 启用数据库 ALTER PLUGGABLE DATABASE pdb_name OPEN; # 切换 pdb alte…

【感知算法】Dempster-Shafer理论(下)

尝试DS理论应用到自动驾驶地图众包更新。 地图特征变化判断 a mass function is applied to quantify the evidence of the existence. existence state: existenct、non-existent、tenative、conflict ∃ ∄ Ω ϕ \exist \\ \not\exist \\ \Omega \\ \phi ∃∃Ωϕ ma…

对 babel 的了解,几个 stage 代表的意思

What is Babel? Babel Babel 是一个广泛使用的 JavaScript 编译器,它主要用于将 ECMAScript 2015(ES6)代码转换为向后兼容的 JavaScript 版本,以便在不同浏览器和环境中运行。Babel 具有强大的插件系统,可以通过插件…

阿里云服务器多少钱?2024年阿里云服务器价格配置表出炉!

2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…

docker的底层原理六: 联合文件系统(UnionFS)

Docker的底层存储原理基于联合文件系统(UnionFS)。 联合文件系统(UnionFS)是一种特殊的文件系统,它允许独立地叠加多个目录层,呈现给用户的是这些目录层的联合视图。这种结构使得在Docker中,不…

【xlwings】结合pandas做类似vlookup的功能

参考自CSDN 导入模块 import pandas as pd import xlwings as xw创建sheet #创建excel文档wb xw.Book() # 创建一个Excel进程App, 并在App中新建一个Book,Book下自动创建一个Sheetwb.save(文件)##excel表显示设定appxw.App(visibleFalse,add_bookFalse)app.display_alertsF…

jmeter 命令行启动 动态参数化

[Jmeter命令行参数] 一、在linux中,使用非gui的方式执行jmeter。若需更改参数,必须先编辑jmx文件,找到对应的变量进行修改,比较麻烦。因此,可以参数化一些常用的变量,直接在Jmeter命令行进行设置 二、参数…

尚硅谷ES基础 - RESTful JSON基本概念倒排索引HTTP

RESTful & JSON REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。…

自动驾驶中之定位总结

1 前言2 典型的单个定位方式2.1 基于通信的定位方法2.1.1 GNSS 全球卫星导航系统2.1.1.1 gnss的优点与缺点2.1.1.2 gnss定位技术2.1.1.2.1 RTK定位技术2.1.1.2.2 PPP定位技术 2.1.1.2 gnss定位技术总结 2.1.2 车联网定位 2.1 基于航位推算的定位方法2.1.1 惯性测试单元定位IMU2…

Microsoft Office Visio 2007中绘制大括号

文章目录 一、Microsoft Office Visio 2007中绘制大括号 一、Microsoft Office Visio 2007中绘制大括号 在Microsoft Office Visio 2007中绘制大括号的方法如下: 打开Visio 2007——文件——形状——其他Visio方案——标注 此时左侧栏中出现“标注”栏&#xff0c…

代码随想录刷题笔记-Day21

1. 二叉搜索树中的插入操作 701. 二叉搜索树中的插入操作https://leetcode.cn/problems/insert-into-a-binary-search-tree/给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。…

Hive 窗口函数札记

窗口函数的理解是hive函数里的一个高阶内容,把一些容易混淆的做个记录,以方便随时查看。 1:ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING 含义: 这个定义表示窗口范围从当前行的前任意多行开始(包括最早的行&a…

Miniconda 安装和使用笔记

Miniconda是Anaconda的简化版, 可以管理多个Python版本的环境. 实际使用的话, 占用的空间不会很小, 我跑一些正常的应用后, 安装目录占用空间4.3GB, 安装建议要预留10到20G的空间. 安装 Miniconda 下载安装包 https://docs.anaconda.com/free/miniconda/历史版本 https://re…

Discuz! X收藏列表页调用封面图片详细教程

Discuz! X默认收藏列表不显示封面图,我们接到客户需求要开发封面图功能在帖子列表,这是我们整理好的详细教程,下载即可查看 修改后,显示封面的收藏列表截图: 详细开发教程下载地址:Discuz! X收藏列表页调用…

【9】知识存储

一、图数据库neo4j Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。单节点的服务器可承载上亿级的节点和关系,单节点性能不够时也可进行分布式集群部…

提升认知水平和防止偏见浅谈

提升认知水平和防止偏见浅谈 《庄子外物》:井蛙不可语海,夏虫不可语冰。 不要跟井底的青蛙谈论大海,因为它的认知只有井底那么大,大海对于它来说是认知盲区;不要与夏虫去谈论冰雪,因为夏虫一生很短没有经历…

5. D. In Love(贪心)

题目链接 D. In Love 题意 线段的集合,有两种操作 插入一个线段删除一个线段 每次操作后都要去查询是否存在两个线段不相交 题解 首先先看两个线段不相交需要满足什么条件 也就是较 大 l > 小 r 大l>小r 大l>小r即可满足不相交 我们进行推广 当集合…

big three(c++)

"Big Three"是指在C类中需要手动实现的三个特殊成员函数,分别是拷贝构造函数(Copy Constructor)、拷贝赋值运算符(Copy Assignment Operator)和析构函数(Destructor)。这三个函数通常…

手撕qsort函数

前言 本篇主要讲解的是qsort函数细节以及运用实例。 紧跟我的脚步一起手撕qsort函数吧~ 欢迎关注​​个人主页:逸狼 更多优质内容: 拿捏c语言指针(上) 拿捏c语言指针(中) 拿捏c语言指针(下&…