PyTorch张量简介与创建
张量是什么
张量:是指数学维度上的标量,向量,矩阵的多维拓展。
标量:数学维度为0,只有大小没有方向的量,如单个数字1、2、3…
向量:数学上是指既有方向又有大小的标量,但是在pytorch以及计算机领域内是类似于一维数组/列表的量。
矩阵:二维的向量,用行列表达。在pytorch以及计算机领域用二维数组/二维列表表达,行列分别对应图像的高和宽。
张量:三维及三维以上数组/列表的表达,例如,用pytorch生成一个(3, 4, 5)的随机张量
import torch
torch.rand(3, 4, 5)
结果如图:
它表示的是,3个4行X5列的数组。在图像上表示的是3个channel的4行X5列的图像。
图像的表达有1个channel的灰度图以及3个channel的RGB图像即是红绿蓝的具体数值表示。
张量在pytorch中即是Tensor。
一、Tensor与Variable
Variabel是pytorch0.4.0以前的一个重要的数据类型,但是在0.4.0版本之后,Variabel并入到了Tensor之中。
Variable是torch.autograd中的数据类型,主要用于封装Tensor, 进行自动求导。PyTorch0.4.0版本及以前主要有5个属性:data、grad、grad_fn、requires_grad、is_leaf。
data:被包装的Tensor
grad:data的梯度
grad_fn:创建Tensor的Function,是自动求导的关键。
requires_grad:指示是否需要梯度。
is_leaf:指示是否是叶子节点(张量)。
pytorch0.4.0版本之后主要有8个属性:data、dtype、shape、device、requires_grad、grad、grad_fn、is_leaf。
dtype:张量的数据类型(PyTorch中有9种),如torch.FloatTensor、torch.cuda.FloatTensor
shape:张量的形状,如(64, 3, 224, 224)。
device:张量所在的设备,GPU/CPU,是加速的关键。
其他的5个与pytorch0.4.0版本一样。
二、张量的创建
1. torch.tensor()
功能:从data创建tensor data:数据,可以是list,numpy dtype:数据类型,默认与data的一致 device:所在设备,cuda/cpu requies_grad:是否需要梯度 pin_memory:是否存于锁页内存。import torch
torch.ones((3, 3))
GPU上生成数据:<