pytorch小记(五):pytorch中的求导操作:backward()
完整代码
x = torch.tensor([[2., -1.], [1., 1.]], requires_grad=True)
print(x)
out = x.pow(2).sum()
print(out)
out.backward()
print(x.grad)
>>>
tensor([[ 2., -1.],
[ 1., 1.]], requires_grad=True)
tensor(9., grad_fn=<SumBackward0>)
tensor([[12., 3.],
[ 3., 3.]])
让我们逐行详细分析代码的执行逻辑及其背后的原理。
代码 1
x = torch.tensor([[2., -1.], [1., 1.]], requires_grad=True)
print(x)
解释
-
torch.tensor
:- 创建一个二维张量
x
,内容为[[2., -1.], [1., 1.]]
。 - 数据类型为浮点数(
float32
),因为传入的是小数。
- 创建一个二维张量
-
requires_grad=True
:- 启用自动求导功能。
- 任何以
x
为输入的张量计算图都会记录下来,用于后续的梯度计算。
-
结果:
打印张量x
:tensor([[ 2., -1.], [ 1., 1.]], requires_grad=True)
代码 2
out = x.pow(2).sum()
print(out)
解释
-
x.pow(2)
:- 计算
x
的每个元素的平方。 - 张量的每个元素被逐元素计算:
- 计算