首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改预训练模型的参数

更改预训练模型的参数
EN

Stack Overflow用户
提问于 2021-08-27 00:33:12
回答 1查看 69关注 0票数 0

我需要更改预训练模型的参数,而不是以任何特定的方式。我试着这样做:

代码语言:javascript
复制
ids = [int(p.sum().item()) for p in model.parameters()]
print(ids[0])

for i in model.parameters():
    x = i.data
    x = x/100

    break;

ids = [int(p.sum().item()) for p in model.parameters()]
print(ids[0])

但它输出的是两个完全相同的数字。

EN

回答 1

Stack Overflow用户

发布于 2021-08-27 01:26:52

这很简单:您需要执行就地操作,否则将对新对象进行操作:

代码语言:javascript
复制
for i in model.parameters():
    x = i.data
    x /= 100
    break

这是一个minimal reproducible example

代码语言:javascript
复制
import torch

torch.manual_seed(2021)

m = torch.nn.Linear(1, 1)

# show current value of the weight
print(next(m.parameters()))
# > tensor([[-0.7391]], requires_grad=True)

for i in m.parameters():
    x = i.data
    x = x/100
    break

# same value :(
print(next(m.parameters()))
# > tensor([[-0.7391]], requires_grad=True)

for i in m.parameters():
    x = i.data
    x /= 100
    break

# now, we changed it
print(next(m.parameters()))
# > tensor([[-0.0074]], requires_grad=True)

附注:在我的示例中,break是不必要的,但我保留了它,因为您在示例中使用了它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68946757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档