【问题标题】:What does required_grad do in PyTorch? (Not requires_grad)在 PyTorch 中 required_grad 做了什么? (不需要_grad)
【发布时间】:2020-04-03 06:19:23
【问题描述】:

我一直在尝试使用 resnet 作为我的主干对多类分类任务进行迁移学习。

在许多教程中,都指出最好只再次训练最后一层(通常是全连接层),同时冻结其他层。冻结将这样完成:

for param in model.parameters():
    param.requires_grad = False

但是,我刚刚意识到我的所有层实际上都没有冻结,并且在检查我的代码时我意识到我打错了:

for param in model.parameters():
    param.required_grad = False

我写的是required_grad而不是requires_grad

我似乎无法找到有关required_grad 的信息——它是什么,也没有它的作用。我发现的唯一一件事是它没有更改requires_grad 标志,而是有一个单独的required_grad 标志设置为False。

谁能解释required_grad 的作用?我一直“没有冻结”我的其他图层吗?

【问题讨论】:

    标签: python pytorch backpropagation resnet


    【解决方案1】:

    好吧,这真的很傻。

    for param in model.parameters():
        param.required_grad = False
    

    在这种情况下,由于我犯的错字而创建了一个新的“required_grad”。 例如,即使是以下内容也不会引发错误:

    for param in model.parameters():
        param.what_in_the_world = False
    

    并且模型的所有参数现在都将具有what_in_the_world 属性。

    我希望没有其他人因此而浪费时间。

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 2020-01-23
      • 1970-01-01
      • 2020-10-14
      • 2016-08-10
      • 2017-03-16
      • 2019-04-02
      • 1970-01-01
      • 2018-08-01
      相关资源
      最近更新 更多