张量
张量与矩阵、向量、标量的关系是怎么样的?
标量(scalar)
一个标量表示一个0维的数据,没有方向。
向量(vector)
向量是一个一维的数组,有一个方向,数据沿一个方向排列存放。
矩阵(matrix)
矩阵是一个二维数组,如灰度图像。有行和列两个维度,分别对应图像的高和宽。无法表示RGB图像。
张量(tensor)
张量是一个多维数组,它是标量、向量、矩阵的高维扩展。如RGB图像,第一个维度为图像的高,第二个维度为图像的宽,第三个维度为色彩通道。张量为一个多维数组。
关系:
标量是0阶张量,向量是一维张量,矩阵维二维张量。
张量Tensor与Variable
Variable“赋予”张量什么功能?
Variable是pytorch0.4.0版本之前的一个重要数据类型,之后的版本将Variable并入到Tensor中。Variable是torch.autograd中的数据类型主要用于封装Tensor,Variable给张量增加以下四个属性,使Tensor可以进行自动求导。
Torch.autograd.Variable:
data: 被包装的Tensor
grad: data的梯度
grad_fn: 创建Tensor的Function,是自动求导的关键
requires_grad:指示是否需要梯度
is_leaf: 指示是否是叶子节点(张量)
Pytorch0.4.0开始,Variable并入Tensor:
dtype: 张量的数据类型,如torch.FloatTensor, torch.cuda.FloatTensor(GPU),一共有九种数据类型(浮点类型,整型,Boolean)
shape: 张量的形状,如(64,3,224,224)
device: 张量所在的设备,GPU/CPU,是加速的关键
张量的创建
直接创建