pytorch能自动反向传播。 前向传播时,能够自动记录每个操作的拓扑顺序,反向传播时则可以自动反向传播。
Variable
Variable是一个类,对是对tensor的一个wrapper。
有三个属性.data
,.grad
和.creator
。(注意:新版的.creator
已经改成.grad_fn
了,这里不再说明。)如果是第一个运算节点,显然.creator
是空,.grad
只有调用.backward
时候才会有。
require_grad
可以指定某个variable
是否计算其梯度。
Examples:
import torch
>>> from torch.autograd import Variable
>>> x = Variable(torch.ones(2, 2), requires_grad=True)
>>> print x
Variable containing:
1 1
1 1
[torch.FloatTensor of size 2x2]
>>> y = x + 2
>>> y
Variable containing:
3 3
3 3
[torch.FloatTensor of size 2x2]
>>> print (y.grad_fn)
<AddBackward0 object at 0x7f6a0bde7ed0>
>>> z = y * y * 3
>>> out = z.mean()
>>> out.backward()
>>> print x.grad
Variable containing:
4.5000 4.5000
4.5000 4.5000
[torch.FloatTensor of size 2x2]