required_grad 在 PyTorch 中做什么? (不是requires_grad)

What does required_grad do in PyTorch? (Not requires_grad)

我一直在尝试使用 resnet 作为我的多类分类任务的迁移学习 backbone。

在许多教程中,有人指出,明智的做法是再次尝试仅训练最后一层(通常是全连接层),同时冻结其他层。冻结将这样进行:

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 的作用?我一直都是 'not freezing' 我的其他层吗?

好吧,这真的很傻。

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 属性。

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