【问题标题】:Still confused about model.train()仍然对 model.train() 感到困惑
【发布时间】:2020-12-12 00:21:22
【问题描述】:
我在这里阅读了有关model.train() 的所有帖子,但仍然不明白它是怎么回事。具体来说,当我使用像 DenseNet 或 VGG 这样的预训练模型时,所有参数都冻结在最后一层旁边,不使用 drop-out 或 Batch Normalization,使用 model.train() 时训练损失开始时要小得多,但随后会减少与没有它时的速率相同。
为什么?
【问题讨论】:
标签:
deep-learning
neural-network
pytorch
torchvision
【解决方案1】:
只有三个选项:model(inputs)、model.train()(inputs) 和 model.eval()(inputs)。唯一的区别是,当使用 .eval() 时,所有的 dropout 和归一化都被忽略了,因为它只用于训练而不是用于测试。
现在你问为什么只使用model(inputs) 时它还在训练?因为当您不使用train() 或eval() 时,模型将自动处于训练模式。所以model(inputs) 和model.train()(inputs) 是一样的。