张量tensor:机器学习的基本数据结构介绍 - Santiago


张量是机器学习系统使用的数据结构,了解它们是您应该早期建立的一项基本技能。张量是数字数据的容器。这是我们存储将在系统中使用的信息的方式。
三个主要属性定义张量:

  1. 等级rank
  2. 它的形状shape
  3. 其数据类型datatype

 
张量的等级Rank
张量的等级rank是指张量的轴数。例子:
  1.  矩阵的等级是2,因为它有两个轴。 
  2. 向量的等级为1,因为它具有单个轴。

 
张量的形状Shape
张量的形状描述了沿每个轴的维数。例:
  1. 方阵(square matrix)可具有(3,3)维度。
  2. 等级为3的张量可以具有(2、5、7)维度。

 
张量的数据类型
张量的数据类型是指其中包含的数据类型。例如,当使用Python的numpy库,以下是一些受支持的数据类型:
  • float32
  • float64
  • uint8
  • int32
  • int64

 
在前面使用了术语“向量”和“矩阵”来指代具有特定等级(分别为1和2)的张量。我们在描述张量时也可以使用这些数学概念。
  • 标量scalar

标量(或0维度D的张量)的等级为0,并且包含一个数字。这些也称为“ 0维张量”。下图显示了如何使用numpy构造0D张量。注意它的形状和等级(.ndim属性。)
import numpy as np;
tenseor = np.array(42);
tensor.shape();
tensor.ndim

结果:0
  • 向量

向量(或一维张量)的等级为1,代表数字数组。下面显示了形状为(4,)的向量。请注意其等级(.ndim属性)如何为1。

import numpy as np;
tenseor = np.array([8,16,32,64]);
tensor.shape(4,);
tensor.ndim

结果:1
  • 矩阵

矩阵(或2D张量)的等级为2,代表向量数组。矩阵的两个轴通常称为“行”和“列”。下面显示了形状为(3,4)的矩阵。
import numpy as np;
tenseor = np.array( [2,10,20,22],
             [8,16,32,64],
             [5,10,15,20]);
tensor.shape(3,4);
tensor.ndim

结果:2
  • 高维

可以通过将低维张量包装在数组中来获得高维张量(3D,4D等)。例如,将2D张量打包成一个数组可得到3D张量。将其包装在另一个阵列中可以得到4D张量,依此类推。
import numpy as np;
tenseor = np.array( [[[2,10,20,22],
             [8,16,32,64],
             [5,10,15,20]],

             [[1,11,21,31]

             [2,12,22,32]

             [3,13,23,33]);
tensor.shape(2,3,4);
tensor.ndim

结果:3
 
以下是一些常见的张量表示形式:
  •  向量:1D-(特征feature)
  •  序列Sequences:2D-(时间步长timesteps,特征)
  •  图片:3D-(高度,宽度,通道)
  •  视频:4D-(帧,高度,宽度,通道)

 
通常,机器学习算法一次处理一个数据子集(称为“批处理”。)使用一批数据时,张量的第一个轴保留用于批处理的大小(样本数)。
例如,如果您处理2D张量(矩阵),则它们中的一批将总共具有3个维: (样本,行,列)请注意,第一个轴是批次中的矩阵数。
按照相同的逻辑,可以将一批图像表示为4D张量:
  • (样本,高度,宽度,通道)

以及一批视频作为5D张量:
  • (样本,帧,高度,宽度,通道)