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

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

【问题讨论】:

    标签: pytorch


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 2017-11-08
        • 2017-04-25
        • 2016-01-30
        • 2017-09-07
        • 2017-07-10
        相关资源
        最近更新 更多