仍然对 model.train() 感到困惑

Still confused about model.train()

我阅读了这里关于 model.train() 的所有帖子,但仍然不明白它是怎么回事。具体来说,当我使用像 DenseNet 或 VGG 这样的预训练模型时,所有参数都冻结在最后一层旁边,不使用 drop-out 或 Batch Normalization,训练损失在使用 model.train() 时开始时要小得多,但随后会减少与没有它时的速度大致相同。 为什么?

只有三个选项:model(inputs)model.train()(inputs)model.eval()(inputs)。唯一的区别是,当使用 .eval() 时,所有的 dropout 和归一化都会被忽略,因为它只用于训练而不是测试。

现在你问为什么刚用model(inputs)还在训练?因为当你不使用 train()eval() 时,模型将自动处于训练模式。所以 model(inputs)model.train()(inputs) 相同。