tf.argmax()

tf.argmax() 或者 tf.math.argmax()

方法作用:返回tensor中指定维度下的最大值索引号
参数说明:argmax(input, axis=None, name=None, dimension=None, output_type=dtypes.int64)
入参含义范围
inputA 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.
axisA Tensor. Must be one of the following types: int32, int64.int32 or int64, must be in the range -rank(input), rank(input)).Describes which axis of the input Tensor to reduce across. For vectors,use axis = 0.[input]的维度范围,见 如何理解Axis?
nameA name for the operation (optional).
dimension舍弃不用
output_typeAn optional tf.DType from: tf.int32, tf.int64. Defaults to tf.int64.

使用方式

# _*_ coding=utf-8 _*_
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
# TensorFlow 1.14.0
x = [
    [
        [
            [2, 3, 1, 4],
            [4, 1, 4, -1],
            [5, 3, 2, 1]
        ],
        [
            [6, 2, 1, 4],
            [0, 1, 4, -1],
            [5, 8, 2, 1]
        ]
    ]
]
b_3 = tf.math.argmax(x, axis=-3)
b_2 = tf.math.argmax(x, axis=-2)
b_1 = tf.math.argmax(x, axis=-1)
b0 = tf.math.argmax(x, axis=0)
b1 = tf.math.argmax(x, axis=1)
b2 = tf.math.argmax(x, axis=2)
b3 = tf.math.argmax(x, axis=3)

with tf.compat.v1.Session() as sess:
    print('-3维取最大索引:\n', sess.run(b_3))
    print('-2维取最大索引:\n', sess.run(b_2))
    print('-1维取最大索引:\n', sess.run(b_1))
    print('0维取最大索引:\n', sess.run(b0))
    print('1维取最大索引:\n', sess.run(b1))
    print('2维取最大索引:\n', sess.run(b2))
    print('3维取最大索引:\n', sess.run(b3))

b_1 = tf.math.argmax(x, axis=-1) :在倒数第1维(正数第3维)取最大值索引号
等同于 b1 = tf.math.argmax(x, axis=3)

在维度3的范围内取最大索引

2, 3, 1, 4, ==== 3维下,该元素最大索引第3列
4, 1, 4, -1, === 3维下,该元素最大索引第0列
5, 3, 2, 1 ==== 3维下,该元素最大索引第0列

6, 2, 1, 4, ==== 3维下,该元素最大索引第0列
0, 1, 4, -1, ====3维下,该元素最大索引第2列
5, 8, 2, 1 ===== 3维下,该元素最大索引第1列

axis=-1/axis=3 的最大索引结果如下:

-1维取最大索引:
 [[[3 0 0]
  [0 2 1]]]
3维取最大索引:
 [[[3 0 0]
  [0 2 1]]]

b_2 = tf.math.argmax(x, axis=-2) 意指:在倒数第2维(正数第2维)取最大值索引号
等同于 b1 = tf.math.argmax(x, axis=2)

		[2, 3, 1, 4], 
      	[4, 1, 4, -1],
       	[5, 3, 2, 1]
 max:    2,0,1, 0   列比较,得到2维下元素1的最大索引号
        
		[6, 2, 1, 4],
        [0, 1, 4, -1],
        [5, 8, 2, 1]
 max:    0,2,1, 0   列比较,得到2维下元素2的最大索引号
2维取最大索引:
[[[2 0 1 0]
 [0 2 1 0]]]
-2维取最大索引:
[[[2 0 1 0]
 [0 2 1 0]]]

b_3 = tf.math.argmax(x, axis=-3) 意指:在倒数第3维(正数第一维)取最大值索引号
等同于 b1 = tf.math.argmax(x, axis=1)

    [
        [2, 3, 1, 4],  ①
        [4, 1, 4, -1], ②
        [5, 3, 2, 1]   ③
    ],
    [
        [6, 2, 1, 4],  ④
        [0, 1, 4, -1], ⑤
        [5, 8, 2, 1]   ⑥
    ]
    一维下,①与④比较 max : 1, 0, 0, 0
    一维下,②与⑤比较 max : 0, 0, 0, 0
    一维下,③与⑥比较 max : 0, 1, 0, 0
-3维取最大索引:
[[[1 0 0 0]
 [0 0 0 0]
 [0 1 0 0]]]

1维取最大索引:
[[[1 0 0 0]
 [0 0 0 0]
 [0 1 0 0]]]

第0维取最大索引值

[
    [
        [2, 3, 1, 4],  ①
        [4, 1, 4, -1], ②
        [5, 3, 2, 1]   ③
    ],
    [
        [6, 2, 1, 4],  ④
        [0, 1, 4, -1], ⑤
        [5, 8, 2, 1]   ⑥
    ]
]
0维下,没看出来咋比较的…有时间再研究吧。。
0维取最大索引:
 [[[0 0 0 0]
  [0 0 0 0]
  [0 0 0 0]]

 [[0 0 0 0]
  [0 0 0 0]
  [0 0 0 0]]]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值