pytorch小技巧——修改tensor数值且不影响反向传播

参考链接

  1. https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter02_prerequisite/2.3_autograd

tensor.data

如果我们想要修改tensor的数值,但不希望被autograd记录(即不会影响反向传播),可以对tensor.data进行操作。例如:

x = torch.ones(1,requires_grad=True)

print(x.data) # 还是一个tensor
print(x.data.requires_grad) # 但是已经是独立于计算图之外

y = 2 * x
x.data *= 100 # 只改变了值,不会记录在计算图,所以不会影响梯度传播

y.backward()
print(x) # 更改data的值也会影响tensor的值
print(x.grad)

运行结果:

tensor([1.])
False
tensor([100.], requires_grad=True)
tensor([2.])

上一篇:pytorch自定义不可导激活函数


下一篇:Dive-into-DL-Pytorch第二章——梯度 读书笔记