栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Optimizer】ValueError: can‘t optimize a non-leaf Tensor

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Optimizer】ValueError: can‘t optimize a non-leaf Tensor

Pytorch优化模型参数时,碰到一个报错, 如下:

从报错类型来看,不能优化非叶子节点的参数。

把model的参数打出来看看,如下图:

for name, parameter in model.named_parameters():
    print('%-40s%-20s%s' %(name, parameter.requires_grad, parameter.is_leaf))

发现的确有两个参数为非叶子节点,同时其requires_grad=True,因此报错。

解决办法:先将这种参数detach掉【requires_grad=False】,然后再喂给优化器,如果确实需要优化这种参数,再调整其requires_grad=True,如下:

for name, parameter in model.named_parameters():
    if not parameter.is_leaf:
        parameter.detach_()

optimizer = torch.optim.Adam(model.parameters(), lr=LR)

for name, parameter in model.named_parameters():
    parameter.requires_grad = True

如此,问题解决,即可正常优化模型参数了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005457.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号