Pytorch 对nn.Parameter类型变量赋值bug

本文介绍在Pytorch中正确地对参数进行赋值的方法,并通过实验对比了不同赋值方式的效果。展示如何避免常见错误,确保张量更新符合预期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Pytorch赋值过程中有一些小细节需要注意。
先出示实验结果

1. 初始化一个值为1的tensor

torch.Tensor([1])

2. 正确的赋值方式:

 w.data[0]=a

以下展示实验记录

In [1]: import torch
# 初始化参数 w,a ,b,
In [2]: w = torch.nn.Parameter(torch.zeros(4))

In [3]: w
Out[3]: 
Parameter containing:
tensor([0., 0., 0., 0.], requires_grad=True)

In [4]: a = torch.Tensor([1])

In [5]: b = torch.Tensor(1)

In [6]: a
Out[6]: tensor([1.])

In [7]: b
Out[7]: tensor([0.])


In [8]: w[0].data=a
# 赋值失败
In [9]: w
Out[9]: 
Parameter containing:
tensor([0., 0., 0., 0.], requires_grad=True)

In [10]: w.data[0]=a
# 赋值成功
In [11]: w
Out[11]: 
Parameter containing:
tensor([1., 0., 0., 0.], requires_grad=True)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值