PyTorch中required_grad做什么? (不是require_grad)

问题描述 投票:0回答:1

我一直在尝试使用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个回答
0
投票

好,这真是愚蠢。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.