关于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()的困惑[重复]的主要内容,如果未能解决你的问题,请参考以下文章