基础
使用torch.view改变形状:
x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8) # the size -1 is inferred from other dimensions
print(x.size(), y.size(), z.size())
torch.Tensor
是这个包的核心类。如果设置它的属性 .requires_grad
为 True
,那么它将会追踪对于该张量的所有操作。当完成计算后可以通过调用 .backward()
,来自动计算所有的梯度。这个张量的所有梯度将会自动累加到.grad
属性.
>>> x=torch.ones(2,2)
>>>
>>> x
tensor([[1., 1.],
[1., 1.]])
>>>
>>>
>>> y=torch.ones(2,2,requires_grad=True)
>>>
>>>
>>> y
tensor([[1., 1.],
[1., 1.]], requires_grad=True)
>>>
>>>
每个张量都有一个 .grad_fn
属性,该属性引用了创建 Tensor
自身的Function。
>>>
>>> x+y
tensor([[2., 2.],
[2., 2.]], grad_fn=<AddBackward0>)
>>>
torch.autograd 包提供Tensor所有操作的自动求导方法。
torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现
Varibale包含三个属性:
- data:存储了Tensor,是本体的数据
- grad:保存了data的梯度,本事是个Variable而非Tensor,与data形状一致
- grad_fn:指向Function对象,用于反向传播的梯度计算之用
雅可比矩阵,下面的例子演示雅可比向量积: