tensorflow中的 tf.argmax() 和 tf.argmin() 函数使用

一、首先来看官方文档的解释:(https://tensorflow.google.cn/api_docs/python/tf/arg_max   官方文档地址)

(注意:在不同的版本中,有两种形式 arg_max 和 argmax,官方说明在以后会舍弃前者)

函数原型:

tf.arg_max(
    input,
    dimension,
    output_type=tf.int64,
    name=None
)

Returns the index with the largest value across dimensions of a tensor.  返回结果是该张量在某个维度上的最大值的索引号。

Args:      (各个参数的解释)

  • input: A Tensor. Must be one of the following types: float32, float64, int32, uint8, int16, int8, complex64, int64, qint8, quint8, qint32, bfloat16, uint16, complex128, half, uint32, uint64.(输入是一个张量,注意类型必须是上述类型)
  •  
  • dimension: A Tensor. Must be one of the following types: int32, int64. int32 or int64, must be in the range [-rank(input), rank(input)). Describes which dimension of the input Tensor to reduce across. For vectors, use dimension = 0.
  • (维度信息注意数据类型,范围必须符合输入的维度,用来表示在哪一维上进行最大化,对于向量来说,维度取0)
  •  
  • output_type: An optional tf.DType from: tf.int32, tf.int64. Defaults to tf.int64.
  • name: A name for the operation (optional).
  • (这两个可选参数一般可以不指定)

二、下面我们来看几个小例子:

import tensorflow as tf
a = [[[7,2,3],[4,5,6]],[[7,8,9],[5,7,3]]]     #输入是一个三维的张量  2X2X3
b = tf.argmax(a,axis=2)          #在第三维进行操作,注意:维度默认是从0开始,所以第三维应该用2
with tf.Session() as sess:
    b = sess.run(b)
   print(b)

最终输出结果:[[0 2]  [2 1]]             

注意:1、输出的维度比输入少一,2X2;

           2、索引号也是从0开始,所以输入的张量在操作的axis上长度若是m,则输出的值只能是[0,m-1]

           3、axis取负的时候,[-3,-1]依次对应着[0,2]。这样最方便的应用是当只想操作最后一维时,不再需要去管输入总共有几维,直接用-1即可。

 

三、同理,tf.argmin() 用法完全一样,不再叙述。

 

 

 

你可能感兴趣的:(深度学习,tensorflow)