许多函数都会有一个axis参数,那么这个是怎么算的?
Tensorflow的Tensor意为张量。一般如果是维的数组ex: (0,1,2,3,4),就是一个数据,我们称之为标量Scalar;1维的数组([0,1,2,3,4]),称为向量Vector;2维的数组([[0,1,2],[3,4,5]]),称为矩阵Matrix;3维及以上的数组,称为张量Tensor。
所以我们可以理解为一个空间就相当于() 中的n个盒子就相当于[ ] ,盒子里面又套了盒子相当于[[ ], [ ]](或者是叫套娃),当我们选择了axis = 0时,就是选择了() ,那么对于一个张量来说( )里面是并列的几个 [ ], [ ], [ ] 即([0, 1 ], [2, 3 ], [4, 5 ], ... ,[m, n ]),也就是操作会在这几个并列的[ ]上并列进行,表现出来就是0, 2, 4 ... m这几个数一起进行操作,1, 3, 5 ... n这几个一起操作,表现为以列来比较;对于选择axis = 1 时,就是选择了[ ],在[ ]里面进行操作,即对1, 2进行操作。
tf.argmax 是 tensorflow 用numpy的np.argmax实现的,它能给出某个tensor对象在某一维上的其数据最大值所在的索引值,常用于metric(如acc)的计算
0表示列,1表示行
例子如下:
A=tf.constant([2,20,30,3,6]) # Constant 1-D Tensor
tf.math.argmax(A) # output 2 as index 2 (A[2]) is maximum in tensor A
B=tf.constant([[2,20,30,3,6],[3,11,16,1,8],[14,45,23,5,27]])
tf.math.argmax(B,0) # [2, 2, 0, 2, 2]
tf.math.argmax(B,1) # [2, 2, 1]