蓝灯123

导航

梯度计算简单例子

下面我们来看一个简单的例子, 定义x, y, z三个变量, 其中x是需要计算梯度的.

x = torch.tensor([1.0], requires_grad=True)
y = torch.tensor([2.0])
z = torch.tensor([2.0])
# 定义运算
f1 = 2*x+y # 2*1+2=4
print(f1)
# tensor([4.], grad_fn=<AddBackward0>)
print(f1.grad_fn)
# <AddBackward0 object at 0x7fcc97180790>
f2 = y+z # 2+2=4
print(f2)
# tensor([4.])
print(f2.grad_fn)
# None

于是可以看到, 因为x是有梯度的, f1是通过x计算得到的, 所以f1也是可以求导的. 因为这里f1=2*x+y, 所以df1/dx=2. 我们验证一下结果.

f1.backward()
print(x.grad)
print(y.grad)

 

posted on 2022-01-20 23:07  蓝灯123  阅读(754)  评论(0编辑  收藏  举报