pytorch 学习笔记2 —— autograd package

autograd package

来源:https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html

  • 如果属性:.requires_grad 的值是true,那么意味着所有的计算都会自动计算backword.当结束计算的时候,可以调用.backward(),所有的梯度都会自动被计算好。
  • tensor的梯度可以查看属性.grad。
  • 想停止一直反向计算梯度,可以调用.detach()
  • 需要梯度时,可以设置属性requires_grad=True,不要时设置为False
  • Tensor和Function是互相联系的。可以根据.grad_fn属性来查看是哪个函数create了这个tensor
  • 如果想计算梯度,可以使用在tensor上调用.backward()

下面看一些实例:

x = torch.ones(2, 2, requires_grad=True)
print(x)

out:
tensor([[1., 1.],
        [1., 1.]], requires_grad=True)
y = x * x + 5
print(y)
print(y.grad_fn) # 查看是哪个函数创造了他
print("x.grad=", x.grad)
print("y.grad=", y.grad)
# print("y.backward", y.backward())
# backward()只能用于标量

out:
tensor([[6., 6.],
        [6., 6.]], grad_fn=<AddBackward0>)
<AddBackward0 object at 0x0000017BA1AAD710>
x.grad= None
y.grad= None
z = y * y * 2 + 10
print(z)
out = z.mean()
print(out)
print(out.grad_fn)
print(out.backward())

out:
tensor([[82., 82.],
        [82., 82.]], grad_fn=<AddBackward0>)
tensor(82., grad_fn=<MeanBackward0>)
<MeanBackward0 object at 0x0000017BA1AAD898>
None
print(out.grad)
print("z.grad=", z.grad)
print("y.grad=", y.grad)
print("x.grad=", x.grad)

out:
None
z.grad= None
y.grad= None
x.grad= tensor([[12., 12.],
        [12., 12.]])

其实计算是计算雅可比矩阵。

这部分的内容还没有很理解,会后续继续学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值