PyTorch——Tensor的相关概念及操作
Tensor的概念
说起张量(tensor)就不得不说他和scalar、vertor、matrix之间的关系了,直接上图:
标量(scalar):只有大小概念,没有方向的概念。通过一个具体的数值就能表达完整。比如:重量、温度、长度、提及、时间、热量等都数据标量。
向量(vector):物理学上也叫矢量,指由大小和方向共同决定的量(跟「标量」相区别)。向量主要有2个维度:大小、方向。比如:力、速度等。
矩阵(matrix):(学过线性代数的都知道,可参见之前的线代笔记)
张量(tensor):一个多维数组,它是标量、向量、矩阵的高位扩展
当下主流的深度网络学习框架是PyTorch和Tensorflow。
对于这两个框架而言,我只想用一句代码来阐述我心中的杂乱:
Import torch as tf
但是,我还是选择了PyTorch( ^_^ /\ ~_~ )
tensor,是PyTorch中最基础的数据类型,也是进行数据存储和运算的基本单元。
数组array这个概念,数组是类似于列表的高阶对象,是有序的元素序列。
Tensor在PyTorch的地位相当于Array在Numpy中地位。
实质上Pytorch将Numpy的Array包装成Tensor,为其定义了各种各样的运算方法和函数
以至于处理tensor的时候,觉得自己在调用Numpy和Pandas这两个包处理。
Tensor的属性
每一个tensor都有三个属性:torch.dtype,
torch.device,
和torch.layout
.
torch.dtype
Pytorch拥有12个不同的数据类型。
tensor类型 相关代码
>>> float_tensor = torch.ones(1, dtype=torch.float)
>>> double_tensor = torch.ones(1, dtype=torch.double)
>>> complex_float_tensor = torch.ones(1, dtype=torch.complex64)
>>> complex_double_tensor = torch.ones(1, dtype=torch.complex128)
>>> int_tensor = torch.ones(1, dtype=torch.int)
>>> long_tensor = torch.ones(1, dtype=torch.long)
>>> uint_tensor = torch.ones(1, dtype=torch.uint8)
>>> double_tensor = torch.ones(1, dtype=torch.double)
>>> bool_tensor = torch.ones(1, dtype=torch.bool)
>>> long_zerodim = torch.tensor(1, dtype=torch.long)
>>> int_zerodim = torch.tensor(1, dtype=torch.int)
>>> torch.add(5, 5).dtype
torch.int64
>>> (int_tensor + 5).dtype
torch.int32
>>> (int_tensor + long_zerodim).dtype
torch.int32
>>> (long_tensor + int_tensor).dtype
torch.int64
>>> (bool_tensor + long_tensor).dtype
torch.int64
>>> (bool_tensor + uint_tensor).dtype
torch.uint8
>>> (float_tensor + double_tensor).dtype
torch.float64
>>> (complex_float_tensor + complex_double_tensor).dtype
torch.complex128
>>> (