对于矩阵操作中axis的理解,以及axis=-1的解释
一、二维理解axis
axis二维 坐标二维数据拥有两个轴:第0轴(axis=0)沿着行的垂直往下,第1轴(axis=1或axis=-1)沿着列的方向水平延伸。
也许简单的来记就是axis=0代表跨行(down),而axis=1代表跨列(across)
二、高维理解axis
这里解释一下三维,更高维也就都能理解了
设axis=i,则沿着第i个下标变化的方向进行操作!
embeddings是一个shape=[3,4,5]的矩阵
3维矩阵对矩阵分别按轴(0,1,-1)取最大值所在下标
按轴取最大值所在下标结果如下
结果看懂为什么是这个结果吗?现在从头开始解释一下
首先把embedding的坐标标出来
坐标以axis=0为例,则沿着第0个下标(最左边的下标)变化的方向进行操作,也就说其他除了第0轴之外,第1轴,第2轴的坐标必须一样才能一并操作。
坐标按axis=0分组axis=0,就是沿着第0轴变化(第0轴坐标取值是0,1,2),其他轴坐标一样的分为一组。比如,a000,a100,a200为一组(因为他们三其他轴坐标取值一样都是00);a001,a101,a201是一组,a024,a124,a224 是一组。那这么算的话,共分为4*5组。所以按照axis=0进行操作,得到的矩阵大小为[4,5]。
坐标按axis=1分组axis=1,就是沿着第1轴变化(第1轴坐标取值是0,1,2,3),其他轴坐标一样的分为一组。比如,a000,a010,a020,a030为一组;a103,a113,a123,a133 是一组。那这么算的话,共分为3*5组。所以按照axis=1进行操作,得到的矩阵大小为[3,5]。
坐标按axis=2分组axis=-1即axis=2,就是沿着第2轴变化(第2轴坐标取值是0,1,2,3,4),其他轴坐标一样的分为一组。比如,a000,a001,a002,a003,a004为一组;a120,a121,a122,a123,a124 是一组。那这么算的话,共分为3*4组。所以按照axis=-1进行操作,得到的矩阵大小为[3,4]。
所以核心原则就是: