axis简单理解

标量、向量、矩阵、张量的关系

这4个概念是维度不断上升的,我们用点线面体的概念来比喻解释会更加容易理解:

点——标量(scalar)
线——向量(vector)
面——矩阵(matrix)
体——张量(tensor)

什么是标量

标量只有大小概念,没有方向的概念。通过一个具体的数值就能表达完整。

比如:重量、温度、长度、提及、时间、热量等都数据标量。

什么是向量

向量主要有2个维度:大小、方向。

大小:箭头的长度表示大小

方向:箭头所指的方向表示方向

向量的3种表达方式
代数表示、几何表示、坐标表示

什么是矩阵

矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

什么是张量

张量有很多种定义的方式,这里只讨论人工智能领域里的概念。

在人工智能领域,定义比较简单,TensorFlow是这么定义的:

A tensor is a generalization of vectors and matrices to potentially higher dimensions.

简单翻译过来就是:张量是多维数组,目的是把向量、矩阵推向更高的维度。

先定义一个矩阵

from mxnet import np, npx

npx.set_np()

A = np.arange(20).reshape(5, 4)
A

输出

array([[ 0.,  1.,  2.,  3.],
       [ 4.,  5.,  6.,  7.],
       [ 8.,  9., 10., 11.],
       [12., 13., 14., 15.],
       [16., 17., 18., 19.]])

默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。
我们还可以[指定张量沿哪一个轴来通过求和降低维度]。
以矩阵为例,为了通过求和所有行的元素来降维(轴0),可以在调用函数时指定axis=0
由于输入矩阵沿0轴降维以生成输出向量,因此输入轴0的维数在输出形状中消失。


A_sum_axis0 = A.sum(axis=0)
A_sum_axis0, A_sum_axis0.shape

输出

(array([40., 45., 50., 55.]), (4,))

指定axis=1将通过汇总所有列的元素降维(轴1)。因此,输入轴1的维数在输出形状中消失。

A_sum_axis1 = A.sum(axis=1)
A_sum_axis1, A_sum_axis1.shape

输出

(array([ 6., 22., 38., 54., 70.]), (5,))

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值