pytorch api文档:nn.Module类的.train() 与 .eval() 对比

.train() 与 .eval() 对比

对比维度 .train()(训练模式) .eval()(评估模式)
核心作用 开启训练相关层的逻辑,用于模型训练 关闭训练相关层的逻辑,用于模型验证/测试
Dropout层 开启随机失活(按设置的概率丢弃神经元) 关闭失活(所有神经元都参与计算)
BatchNorm层 用当前批次计算均值/方差,更新移动统计量 用训练累积的移动均值/方差,不更新统计量
梯度计算 允许梯度计算(配合loss.backward()) 不影响梯度计算,需手动用torch.no_grad()关闭
使用时机 训练循环开始前(一次即可) 验证/测试循环开始前(一次即可)
是否可嵌套 不可,多次调用无效果 不可,多次调用无效果

原文出处:/show_1GW2gYBNiwQo.html