tensorflow中的norm函数作用是用来求L1_norm范数和Eukl_norm范数。 本篇文章主要目的是讲解axis的含义,所以默认都是用L1_norm范数,方便理解。
首先,来看一下2维的情况
创建一个 2×3 的常量
a = tf.constant(range(6), shape = [2,3])
tf.norm(a,ord=1,axis=0)
axis=0,可以理解为将shape中的第0个索引盖住,只对其他索引进行操作
此处,相当于只对列进行操作,即每一列都求范数。
当axis=1时,同理。
如图:
接下来,在看3维的情况
创建一个 2×3×4 的常量
a = tf.constant(range(24), shape = [2,3,4])
同2维一样的理解:
若axis=0,则将shape中的第0个索引无视,对其他索引进行操作。
此处为 对所有的 3×4 矩阵进行求范数,也就是把所有的3×4的矩阵进行相加。
如图:
axis=1,表示将shape中的第1个索引无视,只对第0个和第2个索引进行操作。
此处可以理解为:
将所有 3×4 矩阵中的列进行求范数,也就是说,对2个 3×4 列矩阵中的所有列进行求范数,而无视行的概念。
如图:
axis=2, 则表示无视列概念,对所有的行进行操作。
如图: