神经网络的数据表示- 张量(tensor)

神经网络使用的数据存储在多维Numpy数组中,也叫张量(tensor)。

张量是一个数据容器,张量的维度(dimension)通常叫做轴(axis)。

1. 标量(0D张量)

仅含一个数字的张量叫做标量(scalar,也叫标量张量、零维张量、0D张量)。在Numpy中,一个float32或float64数字就是一个标量张量(或标量数组)。可以用ndim属性来查看一个Numpy张量的轴的个数。标量张量有0个轴(ndim == 0)。张量轴的个数也叫做阶(rank)。
eg:
在这里插入图片描述

2. 向量(1D张量)

数字组成的数字叫做向量(vector)或一维张量(1D张量)。
eg:
在这里插入图片描述
这个向量有5个元素,所以被称为5D向量。

注:5D向量和5D张量不同,5D向量只有一个轴,沿着轴有5个维度,而5D张量有5个轴,沿着每个轴可能有任意个维度

维度(dimensionality)可以表示沿着某个轴上的元素个数,也可以表示张量中轴的个数。

3. 矩阵(2D张量)

向量组成的数组叫矩阵(matrix)或二维张量(2D张量)。矩阵有2个轴(也叫行和列)。

4. 3D张量与更高维张量

将多个矩阵组成一个新的数组,可以得到一个3D张量。
将多个3D张量合成一个数组,可以创建一个4D张量。
以此类推,深度学习处理的一般是0D到4D的张量,但处理视频数据时可能会遇到5D张量。

5. 关键属性

1)轴的个数(阶)

例如,3D张量有3个轴,矩阵有2个轴,这在Numpy等python库中也叫做张量的ndim。

2)形状

整数元组,表示张量沿每个轴的维度大小(元素个数)。例如,矩阵的形状可以为(3,5),3D张量的形状可以为(3,3,5)。向量的形状只包含一个元素,比如(5,),而标量的形状为空,即()。

3)数据类型(在python库中通常叫做dtype)

例如,张量的类型可以是float32、unit8、float64等。

6. 现实世界中的数据张量

1)向量数据

2D张量,形状为 (samples, features)。

2)时间序列数据或序列数据

3D张量,形状为 (samples, timesteps, features)。

3)图像

4D张量,形状为 (samples, height, width, channels) 或 (samples, channels, height, width)。

4)视频

5D张量,形状为 (samples, frames, height, width, channels) 或 (samples, frames, channels, height, width)。

7. 广播

形状不同的张量相加,较小的张量会被广播(broadcast)以匹配较大张量的形状。广播包含以下两步:
1)向较小的张量添加轴(广播轴),使其ndim与较大的张量相同。
2)将较小的张量沿着新轴重复,使其形状与较大的张量相同。

猜你喜欢

转载自blog.csdn.net/qq_35008279/article/details/86360290
今日推荐