带有预训练权重的 Model.train() 使结果全为 0 而 model.eval() 很好

问题描述

感谢您对此事的关注。

我想继续用预先训练好的权重训练模型。当我用 model.eval() 评估这个预训练的模型时,一切都很好,模型会产生一些合理的结果,但是当我想进一步训练这个模型并用 model.train() 设置模式时,问题会发生。在前向循环期间,所有生成的结果在 model.train() 语句 (batchsize = 1) 之后都将为零。

关于为什么会发生这种情况的任何想法?

非常感谢。

解决方法

Batch normalization 的工作原理是根据 batch 的估计均值和方差对所有激活进行标准化。
batchsize=1 时,您期望这些值是什么?

增加您的 batchsize,看看是否会出现问题。