pytorch api文档:nn.Module类的.train() 与 .eval() 对比 作者:马育民 • 2026-01-30 09:39 • 阅读:10002 # .train() 与 .eval() 对比 | 对比维度 | `.train()`(训练模式) | `.eval()`(评估模式) | |----------|------------------------|-----------------------| | **核心作用** | 开启训练相关层的逻辑,用于模型训练 | 关闭训练相关层的逻辑,用于模型验证/测试 | | **Dropout层** | 开启随机失活(按设置的概率丢弃神经元) | 关闭失活(所有神经元都参与计算) | | **BatchNorm层** | 用**当前批次**计算均值/方差,更新移动统计量 | 用训练累积的**移动均值/方差**,不更新统计量 | | **梯度计算** | 允许梯度计算(配合`loss.backward()`) | 不影响梯度计算,需手动用`torch.no_grad()`关闭 | | **使用时机** | 训练循环开始前(一次即可) | 验证/测试循环开始前(一次即可) | | **是否可嵌套** | 不可,多次调用无效果 | 不可,多次调用无效果 | 原文出处:http://www.malaoshi.top/show_1GW2gYBNiwQo.html