tf.argmax() 或者 tf.math.argmax()
方法作用:返回tensor中指定维度下的最大值索引号
参数说明:argmax(input, axis=None, name=None, dimension=None, output_type=dtypes.int64)
入参 | 含义 | 范围 |
---|---|---|
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 . | |
axis | 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 axis of the input Tensor to reduce across. For vectors,use axis = 0. | [input]的维度范围,见 如何理解Axis? |
name | A name for the operation (optional). | |
dimension | 舍弃不用 | |
output_type | An 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]]]