仍然对 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)
相同。
我阅读了这里关于 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)
相同。