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 >>> (bool_tensor + int_tensor