1.Tensor
Tensor是PyTorch中重要的数据结构,可认为是一个高维数组。它可以是一个数(标量)、一维数组(矩阵)或更高维的数组。Tensor和numpy的ndarrays类似,但Tensor可以使用GPU加速。
Tensor支持很多操作,包括数学运算、线性代数、选择、切片等。Tensor和numpy的数组间的互操作非常容易且快速,Tensor不支持的操作,可以先转换为numpy数组处理,之后转为Tensor.
2.Autograd:自动微分
autograd.Variable是Autograd中的核心类,它简单封装Tensor,并支持几乎所有Tensor的操作。Tensor在被封为Variable之后,可以调用它的.backward实现反向传播,自动计算所有梯度。
Variable主要包含三个属性:
(1)data:保存Variable所包含的Tensor;
(2)grad:保存data对应的梯度,grad也是个Variable,而不是Tensor,它和data的形状一样。
(3)grad_fn:指向一个Function对象,这个Function用来反向传播计算输入的梯度。
3.神经网络
Autograd实现了反向传播功能,torch.nn是专门为神经网络设计的模块化接口。nn构建于Autograd之上,可用来定义和运行神经网络。nn.Module是nn中最重要的类,可以把它看做一个网络的封装,包含网络各层定义及forward 方法,调用forward(input)方法,可返回前向传播的结果。