本站原创文章,转载请说明来自《老饼讲解-深度学习》www.bbbdata.com
在使用pytorch的tensor时,有时需要修改带梯度变量的数据
但带梯度的tensor不能直接修改数据,本文讲解如何修改带梯度的tensor的数据
本节展示带梯度的tensor如何修改数据
👉不带梯度的tensor可以直接修改数据
pytorch中,在tensor不带梯度时,是可以根据索引直接修改数据的
示例如下:
import torch
x = torch.tensor([[1, 1],[2, 2.]]) # 不带梯度的tensor
x[0][0] = 99 # 可以直接修改
print(x)
运行结果如下:
tensor([[99., 1.],
[ 2., 2.]])
👉带梯度的tensor不能直接修改数据
如果tensor带梯度,就不能根据索引直接修改数据,会报错
示例如下:
import torch
x = torch.tensor([[1, 1],[2, 2.]],requires_grad=True) # 带梯度的tensor
x[0][0] = 99 # 不可以直接修改
print(x)
运行后报错如下:
RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation.
👉带梯度的tensor需要根据data属性修改数据
pytorch的tensor带梯度时,而需要通过data属性来修改数据
示例如下:
import torch
x = torch.tensor([[1, 1],[2, 2.]],requires_grad=True) # 带梯度的tensor
x.data[0][0]= 99 # 通过data属性来修改数据
print(x)
运行结果如下:
tensor([[99., 1.],
[ 2., 2.]])
tensor([[99., 1.],
[ 2., 2.]], requires_grad=True)
好了,以上就是pytorch中如何修改带梯度tensor的数据的方法了~
End