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
属性。
我希望没有人因此而浪费他们的时间。
我一直在尝试使用 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
属性。
我希望没有人因此而浪费他们的时间。