一.张量的定义
1.张量
张量是一个多维数组,是标量,向量,矩阵的高维拓展
2.Tensor数据类型与Variable数据类型
在PyTorch0.4.0之前,张量相关的数据类型有Tensor和Variable,其中Tensor用于存储张量数据,Variable用来对Tensor进行封装并用于自动求导.
Variable数据类型结构如下图:
data:被包装的Tensor数据
- 但在程序中定义了一个张量t=[1,1,1],使用t.data打印出来的是tensor([1,1,1]),需要使用t.data.numpy()打印出来的才是[1,1,1].相当于用.data.numpy()才能tensor中的数据真正取出来
grad:data的梯度
grad_fn:创建Tensor的方法,如加法,乘法等,是自动求导的关键
requires_grad:Tensor是否需要计算梯度(并不是所有的张量都要用到梯度的)
is_leaf:是否是叶子节点,这是计算图中的概念,后面会详细说明
PyTorch0.4.0版本之后,Variable并入Tensor
此时Tensor数据类型结构如下:
dtype:张量的数据类型
shape:张量的形状
devece:张量所在的设备(CUDA(即GPU)或者CPU)
其他参数与0.4.0版本前的Variable定义相同
Tensor的数据类型:
共有九种,三大类
浮点型类,其中32位浮点型常用于网络权值:
16位浮点型 | 32位浮点型 | 64位浮点型 |
---|---|---|
torch.float16或torch.half | torch.float32或torch.float | torch.float64或torch.double |
整型类,其中64位长整形常用于图像的标签:
8位无符号整型 | 8位有符号整形 | 16位整形 | 32位整型 | 64位长整形 |
---|---|---|---|---|
torch.uint8 | torch.int8 | torch.int16或torch.short | torch.int32或torch.int | torch.int64或torch.long |
布尔类:
布尔型 |
---|
torch.bool |
二.张量的创建-直接创建
1.torch.tensor()
创建格式:
代码实现:
#创建numpy数组
arr = np.ones(