关于model.train()的困惑[重复]

Posted

技术标签:

【中文标题】关于model.train()的困惑[重复]【英文标题】:Confusion about model.train() [duplicate] 【发布时间】:2020-12-25 20:29:54 【问题描述】:

我是 pytorch 的初学者。我在github上看到有的深度学习模型有model.train(),有的没有,但是可以正常运行。我想知道是否需要 model.train() ?有什么效果?

【问题讨论】:

【参考方案1】:

train 及其对应的eval 在训练和评估模式之间切换模型。

在训练模式下,跟踪的梯度通常会在每次评估模型时更新。这是执行用于训练的梯度下降所必需的。在评估模式下,它们不是。

【讨论】:

【参考方案2】:

train 模式或eval 模式仅在您的模块在训练/测试中表现不对称(例如 BatchNorm、Dropout)时才重要。我想强调一点,它根本不影响梯度累积。即使使用非对称模块,也可以在eval 模式下完美地训练模型。有些人这样做是为了在使用预训练的 ImageNet 模型进行训练时节省内存。

如果你没有任何不对称的模块,那根本没关系。

默认情况下,所有模块都以training=True开头。

【讨论】:

以上是关于关于model.train()的困惑[重复]的主要内容,如果未能解决你的问题,请参考以下文章

关于 for...in 循环的困惑 [重复]

关于 64 位有符号整数的最大可计算值的困惑 [重复]

对JAVA界面感到困惑[重复]

对减少和箭头功能感到困惑[重复]

对Java的修饰符有点困惑[重复]

对WindowBuilder感到困惑[重复]