本文是《Python深度学习》一书的相关笔记。
张量(tensor)是一个数据容器,它所包含的一般是数值数据。下面是张量中的一些名词:
- 轴(axis):张量的维度( dimension);张量轴的个数也称作阶.
- 形状(shaple):这是一个整数元组,表示张量沿每个轴的维度大小(元素个数)。例如,某矩
阵的形状为 (3, 5)表示这个矩阵有3行5列 - 数据类型(dtype):张量中所包含数据的类型
1 标量(0D 张量)
- 仅包含一个数字的张量叫作标量(scalar)
- 可以用ndim属性来查看一个 Numpy 张量的轴的个数。
import numpy as np |
2 向量(1D 张量)
- 数字组成的数组叫作向量(vector)
12, 3, 6, 14, 7]) x = np.array([ |
这个向量有 5 个元素,所以被称为 5D 向量。不要把 5D 向量和 5D 张量弄混! 5D 向量只
有一个轴,沿着轴有 5 个维度,而 5D 张量有 5 个轴(沿着每个轴可能有任意个维度)。
3 矩阵(2D 张量)
- 向量组成的数组叫作矩阵(matrix)
- 第一个轴上的元素叫作行(row),第二个轴上的元素叫作列(column)
5, 78, 2, 34, 0], x = np.array([[ |
4 3D 张量与更高维张量
- 将多个矩阵组合成一个新的数组,可以得到一个 3D 张量,可以将其直观地理解为数字
组成的立方体。 - 将多个 3D 张量组合成一个数组,可以创建一个 4D 张量,以此类推。
5, 78, 2, 34, 0], x = np.array([[[ |
5 Numpy张量切片
- 我们以Numpy 3D张量上的张量切片运算为例
- train_images[i] 表示沿着第一个轴的所有数字
#下面这个例子选择第 10~100 个数字,并将其放在形状为 (90, 28,28) 的数组中 |
- 再以某个3D张量存储的图像为例
#你可以在所有图像的右下角选出 14 像素× 14 像素的区域: |
6 常用张量表示
6.1 向量数据
-
2D 张量,形状为 (samples, features)
-
对于这种数据集,每个数据点都被编码为一个向量,因此一个数据批
量就被编码为 2D 张量(即向量组成的数组),其中第一个轴是样本轴,第二个轴是特征轴。
6.2 时间序列数据或序列数据
-
3D 张量,形状为 (samples, timesteps, features)
-
如时间序列数据或序列数据
![](https://img-blog.csdnimg.cn/20191118170944522.png#pic_center =400x250)
6.3 图像
-
4D 张量,形状为 (samples, height, width, channels) 或 (samples, channels, height, width)
-
如图像数据,图像通常具有三个维度:高度、宽度和颜色深度。
6.4 视频
-
5D 张量,形状为 (samples, frames, height, width, channels) 或 (samples, frames, channels, height, width)
-
如视频数据,频可以看作一系列帧,每一帧都是一张彩色图像。由于每一帧都可以保存在一个形状为 (height, width, color_depth) 的 3D 张量中,因此一系列帧可以保存在一个形状为 (frames, height, width, color_depth) 的 4D 张量中,而不同视频组成的批量则可以保存在一个 5D 张量中,其形状为(samples, frames, height, width, color_depth)。