只含有一个数字的张量称为标量(或 0 维张量、0D 张量),标量有 0 个坐标轴,即 ndim == 0。张量轴的个数又称为它的秩。
>>>import numpy as np
>>>x = np.array(12)
>>>x
array(12)
>>>x.ndim
0
一个数组称作一个矢量,或 1D 张量。一个矢量只含有一个坐标轴:
>>>x = np.array([12, 3, 6, 14])
>>>x
array([12, 3, 6, 14])
>>>x.ndim
1
这里我们的矢量含有 5 个元素,所以又被叫作一个 5 维矢量。千万不要将 5D 矢量和 5D 张量的概念弄混,一个 5D 的矢量只含有一个坐标轴,沿着坐标轴具有 5 个维度,而一个 5D 张量含有 5 个坐标轴,每个坐标轴均可含有任意维度。维度的概念既可以指某一具体坐标轴下元素的个数,又可以指张量中坐标轴的个数。
一个阵列的矢量称作一个矩阵,或者 2D 张量。一个矩阵含有两条坐标轴(常称作‘行’和‘列’)。
>>>x = np.array([[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]])
>>>x.ndim
2
第一个坐标轴下的元素称作‘行’,第二个坐标轴下的元素称作‘列’。如上例中,[5, 78, 2, 34, 0] 是 x 的第一行,而[5, 6, 7] 是第一列。
如果你将多个矩阵组合在一起,你将得到一个 3D 张量,在视觉上呈现一个数字立方:
>>>x = np.array([[[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]],
[[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]],
[[5, 78, 2, 34, 0],
[6, 79, 3, 35, 1],
[7, 80, 4, 36, 2]]])
>>>x.ndim
3
将 3D 张量组合在一起,可以得到 4D 张量。以此类推。在深度学习中常用到 0D 至 4D 张量,而当你处理视频数据时,你可能会用到 5D 张量。