pytorch中model.eval的理解

在复现simsam的过程中,看到在线性评估部分的训练函数中设置了model.eval,不太理解,印象中一直觉得,model.eval会影响梯度的回传,这里来拨乱反正一下。

  1. 事实上,model.eval()主要影响 BatchNorm 和 Dropout 层的行为,确保它们在训练和评估时的表现一致。
    model.eval() 会做以下几件事:
  • BatchNorm 层:从计算每个批次的均值和方差,变成使用训练期间保存的全局均值和方差。这有助于模型在推理时保持一致的行为。
  • Dropout 层:将 Dropout 层禁用(即在训练时丢弃部分神经元的随机行为停止),以确保所有神经元参与计算。
  1. 而真正影响梯度回传的实际上是requires_grad=True。只要某一层该属性为True,那么这一层就会参与前向传播和反向传播。
  2. 结合simsiam的实际场景来看一下:
    在该场景中希望冻结模型的前几层(特征提取部分)并只训练后面的线性分类器部分,因此,将前面的层的 requires_grad 设置为 False,使得它们不会计算梯度和更新参数,后面的线性分类器部分保持 requires_grad=True,使其参与训练。同时在训练的过程中设置model.eval(),确保被冻结的层中的BN层的参数不会改变。

万万要搞清楚啊!

相关推荐
神州问学几秒前
每周技术加速器:为什么下一代AI的竞争是"上下文操作系统"之争?
人工智能
雨大王5121 分钟前
汽车零部件企业如何通过OEE钻取分析实现降本增效?
大数据·人工智能
艾上编程2 分钟前
第一章——办公自动化之Excel批量合并工具:Python助力高效办公
开发语言·python·excel
DisonTangor2 分钟前
Mistral AI 开源一款专为软件工程任务设计的智能大语言模型——Devstral 2 123B Instruct 2512
人工智能·开源·aigc·软件工程
DeepFlow 零侵扰全栈可观测5 分钟前
可观测性与人工智能(AI)的共生关系:定义、互需性及在IT系统自动化中的实践
运维·人工智能·自动化
非著名架构师7 分钟前
从“人找信息”到“信息找人”:气象服务模型如何主动推送风险,守护全域安全?
大数据·人工智能·安全·数据分析·高精度天气预报数据·galeweather.cn
神算大模型APi--天枢64614 分钟前
国产硬件架构算力平台:破解大模型本地化部署难题,标准化端口加速企业 AI 落地
大数据·前端·人工智能·架构·硬件架构
Tezign_space15 分钟前
AI重构营销:3K营销体系的技术实现路径与系统架构
人工智能·重构·系统架构·内容运营·kol·kos·koc
永远都不秃头的程序员(互关)17 分钟前
人工智能中的深度学习:基础与实战应用
人工智能·笔记·学习
元亓亓亓18 分钟前
LeetCode热题100--739. 每日温度--中等
python·算法·leetcode