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层的参数不会改变。

万万要搞清楚啊!

相关推荐
梦想的旅途25 小时前
企微 API 二次开发:利用 AI Agent 实现自动化运维
运维·人工智能·企业微信
DS随心转APP5 小时前
deepseek生成的word怎么下载 AI导出鸭全平台方案技术深度测评
人工智能·ai·chatgpt·word·deepseek·ai导出鸭
皖山文武5 小时前
逻辑代数基础学习笔记--概述
笔记·学习·机器学习
睿本云5 小时前
从“有数据”到“会用数据”,一次标签体系的升级能带来的改变
大数据·人工智能
jerryinwuhan5 小时前
《Python数据预处理》第四章
开发语言·python
俊哥V5 小时前
每日 AI 研究简报 · 2026-08-14
人工智能·ai
NutShell Wang5 小时前
「音画同生」时代开启:2026 年 8 月 AI 视频生成四大发布复盘
人工智能·开源·aigc·ai agent·智能体·vibe coding
正在走向自律5 小时前
WorkBuddy AI工具使用介绍完全指南
人工智能·爬虫·ai编程·workbuddy·ai的力量
EasyGBS5 小时前
告别“通用AI”的三大痛点:国标GB28181公网平台EasyGBS+DLTM让企业拥有专属AI安防大脑
人工智能·深度学习·机器学习
爱分享的康康5 小时前
解锁路测数据价值|康谋自动驾驶采集‑分析全链路方案解读
人工智能·数码相机·自动驾驶