1.1 张量(tensor)
在神经网络中,一堆存储在多维Numpy数组中的数据,就可称之为张量。它的核心概念在于,它是一个数据容器。它包含的数据几乎总是数值数据,因此它是数字的容器。
例如,我们熟悉的矩阵,它是二维张量。张量是矩阵向任意维度的推广 [注意,张量的维度(dimension)通常叫做轴(axis)]。
1.2 标量(0D张量)
仅包含一个数字的张量叫做标量(scalar,也叫标量张量、零维张量、0D张量)。在Numpy中,一个float32或float64的数字就是一个标量张量(或标量数组)。可以使用ndim属性来查看一个Numpy张量的轴的个数。标量张量有0个轴(ndim == 0)。张量轴的个数也叫阶(rank)。下面是一个是Numpy标量。
1 | import numpy as np |
1.3 向量(1D张量)
数字组成的数组叫做向量(vector)或是一维张量(1D张量)。一维张量只有一个轴。下面是一个Numpy向量。
1 | 21, 2, 10, 254, 1]) x = np.array([ |
这是 一个有 5个元素的向量,所以被称为5D向量。不要把5D张量和5D向量弄混!5D向量只有一个轴,沿着轴有5个维度,而5D张量有5个轴(沿着每个轴可能有任意个维度)。维度可以表示沿着某个轴上的元素个数(比如5D向量),也可以表示张量中轴的个数(比如5D张量)。如果感到混乱,对于后面一种情况,更准确的说法是5阶张量(张量的阶数即轴的个数),但5D张量这种模糊的写法更常见。
1.4 矩阵(2D张量)
向量组成的数组叫做矩阵(matrix)或二维张量(2D张量)。矩阵有2个轴(通常叫做行和列)。可以将矩阵直观的理解为数字组成的矩形网格。下面是一个Numpy矩阵。
1 | 34, 8, 95, 10, 3], x = np.array([[ |
1.5 3D张量与更高维张量
将多个矩阵组合成一个新的数组,可以得到一个3D张量。可以将其值观的理解为数字组成的立方体。下面是一个Numpy的3D张量。
1 | 21, 4, 54, 21], x = np.array([[[ |
1.6 关键属性
张量是由以下三个关键属性来定义的。
轴的个数(阶)。例如,3D张量有3个轴,矩阵(2D张量)有2个轴。在Numpy等Python库中也叫张量的ndim。
形状。这是一个整数元组。表示张量沿着每个轴的维度大小(元素个数)。例如,矩阵的形状(a, b),3D张量的形状为(a, b, c)。向量的形状只包含一个元素,比如前面1.3中的例子形状为(5,),而标量的形状为空,即()。
数据类型。这是张量中所包含数据的类型,常见的有float32、float64、uint8等。极少数会遇到字符(char)张量。注意,Numpy(以及大多数其他库)中不存在字符串张量,因为张量存储在预先分配的连续内存段中,而字符串的长度是可变的,无法用这种方式存储。
- 本文标题:初识神经网络——张量
- 本文作者:recovxy
- 创建时间:2020-12-11 10:51:36
- 本文链接:https://naiv.xyz/2020/12/11/2020-12-11-First acquaintance with neural networks--tensors/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!