tf.argmax 与 tf.arg_max

tf.argmax 与 tf.arg_max 用法相同,下面介绍 tf.argmax 用法

tf.argmax

def argmax(input,
           axis=None,
           name=None,
           dimension=None,
           output_type=dtypes.int64)
numpy.argmax(a, axis=None, out=None) 
返回沿轴axis最大值的索引。

Parameters: 
input: array_like,数组
axis : int, 可选,默认情况下,索引的是平铺的数组,否则沿指定的轴。 
out : array, 可选 如果提供,结果以合适的形状和类型被插入到此数组中。 

Returns: 
index_array : ndarray of ints 
索引数组。它具有与a.shape相同的形状,其中axis被移除。          

tf.argmax() 与 numpy.argmax() 方法的用法是一致的

axis = 0 的时候返回每一列最大值的位置索引
axis = 1 的时候返回每一行最大值的位置索引
axis = 2、3、4 ...,即为多维张量时,同理推断

例子

>>> a = np.arange(6).reshape(2,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5]])
>>> np.argmax(a)
5
>>> np.argmax(a, axis=0)  #0代表列
array([1, 1, 1])
>>> np.argmax(a, axis=1)  #1代表行
array([2, 2])
>>>
>>> b = np.arange(6)
>>> b[1] = 5
>>> b
array([0, 5, 2, 3, 4, 5])
>>> np.argmax(b)  #只返回第一次出现的最大值的索引
1

tf.arg_max()

The following is the source code of argmax (from https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/math_ops.py).

# pylint: disable=redefined-builtin
# TODO(aselle): deprecate arg_max
def argmax(input, axis=None, name=None, dimension=None):
  if dimension is not None:
    if axis is not None:
      raise ValueError("Cannot specify both 'axis' and 'dimension'")
    axis = dimension
  elif axis is None:
    axis = 0
  return gen_math_ops.arg_max(input, axis, name)

As you can see, argmax is using arg_max inside. Also from the code, I recommend using argmax because arg_max could be deprecated soon.

posted @ 2018-03-06 09:36  nowgood  阅读(8133)  评论(0编辑  收藏  举报