数据的维度
多维Numpy数组也可以叫张量(tensor)。当前所有机器学习系统都是使用张量作为基本数据结构,张量是一个数据容器,它包含的数据几乎是数值数据,因此它也是数字的容器。我们都熟悉矩阵,矩阵是二维数组(二维张量)。张量是矩阵向任意维度的推广。张量的维度(dimension)通常叫作轴(axis)。
数据的维度如图所示:
1.标量(0D张量)
仅包含一个数字的张量叫作标量(scalar,也叫作标量张量、零维张量、0D张量)。在Numpy中,一个float32或float64的数字就是一个标量张量(或标量数组)。上图中无0D张量。
>>> import numpy as np
>>> a = np.array(12)
>>> a
array(12)
>>> a.ndim
0
2.向量(一维数组、1d-tensor)
数字组成的数组叫作向量(vector)或一维张量(1D张量)。一维张量只有一个轴。
>>> import numpy as np
>>> a = np.array([12,3,5,7])
>>> a
array([12,3,5,7])
>>> a.ndim # 数组维度(维数、轴数、秩)
1
3. 二维数组(2d-tensor)
向量组成的数组叫作二维数组(2D张量)。有2个轴(通常叫作行和列)。
>>> import numpy as np
>>> a = np.array([[12,3,5,7],[11,2,4,6],[10,8,6,7]])
>>> a
array([[12, 3, 5, 7],
[11, 2, 4, 6],
[10, 8, 6, 7]])
>>> a.ndim # 数组维度(维数、轴数、秩)
2
第一个轴上的元素叫作行(row),第二个轴上的元素叫作列(column)。
4. 三维数组(3d-tensor)
将多个二维数组组合成一个新的数组,可以得到一个三维数组,可以将其值观的理解为数字组成的立方体。
>>> import numpy as np
>>> a = np.arange(1,28).reshape(3,3,3)
>>> a
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9]],
[[10, 11, 12],
[13, 14, 15],
[16, 17, 18]],
[[19, 20, 21],
[22, 23, 24],
[25, 26, 27]]])
三维数据形状如图:
时间序列数据或序列数据,图像数据均为三维数组。一张图像通常具有三个维度:高度、宽度、和颜色深度。灰度图像只有一个颜色通道,可以保存为二维。但按照惯例,图像张量始终都是3D张量,如图:
一种颜色构成一个二维数组(2d-tensor),三种颜色(RBG)三个二维数组构成一个三维数组(3d-tensor),构成了彩色图像。
将多个3d-tensor组合成,可以创建一个4d-tensor。如图所示,多个彩色图像构成四维数组(4d-tensor):
以此类推,深度学习处理的一般是0D到4D的张量,但是处理视频数据也可能遇到5D张量。