argmax :返回矩阵中的最大索引

一维矩阵的例子:

input1 = tf.constant([1.0, 2.0, 3.0])
with tf.Session() as sess:
	print(sess.run(tf.argmax(input1)))

3最大,索引一般都是从0开始,所以应该返回2

输出:

tensorflow之argmax与axis_tensorflow

 二维矩阵的例子:

input1 = tf.constant([[1.0, 2.0, 3.0],[4.0, 5.0, 6.0]])
with tf.Session() as sess:
	print(sess.run(tf.argmax(input1)))

直接上输出吧:

tensorflow之argmax与axis_TensorFlow_02

 输出是一个矩阵

再调整一下参数:

input1 = tf.constant([[1.0, 2.0, 3.0],[4.0, 5.0, 6.0]])
with tf.Session() as sess:
	print(sess.run(tf.argmax(input1,axis = 1)))

输出如下:

tensorflow之argmax与axis_tensorflow_03

 第一个shape是3 第二个shape是2

为什么呢?

三维矩阵的例子:

axis =0情况

input1 = tf.constant([
[[1.0, 2.0, 3.0],[6.0, 5.0, 4.0]],
[[10.0, 11.0, 12.0],[9.0, 8.0, 7.0]]
])
print(input1)
with tf.Session() as sess:
	print(sess.run(tf.argmax(input1,axis = 0)))

 输出:

tensorflow之argmax与axis_tensorflow_04

axis =1情况

input1 = tf.constant([
[[1.0, 2.0, 3.0],[6.0, 5.0, 4.0]],
[[10.0, 11.0, 12.0],[9.0, 8.0, 7.0]]
])
print(input1)
with tf.Session() as sess:
	print(sess.run(tf.argmax(input1,axis = 1)))

 输出:

tensorflow之argmax与axis_TensorFlow_05

axis =2情况

input1 = tf.constant([
[[1.0, 2.0, 3.0],[6.0, 5.0, 4.0]],
[[10.0, 11.0, 12.0],[9.0, 8.0, 7.0]]
])
print(input1)
with tf.Session() as sess:
	print(sess.run(tf.argmax(input1,axis = 2)))

 输出:

tensorflow之argmax与axis_TensorFlow_06

 axis =3的时候,程序崩溃,就是说axis最大是矩阵的维数-1

假设矩阵shape是(2,2,3)

如果axis是0---》结果(2,3)

如果axis是1--》结果(2,3)

如果axis是2--》结果(2,2)

以3维的矩阵为例,假设(x,y,z),

如果axis为0,就是返回的x方向的最大数的索引

如果axis为1,就是返回的y方向的最大数的索引

如果axis为2,就是返回的是z方向最大数的索引

这里想将矩阵如果:

tensorflow之argmax与axis_TensorFlow_07

--->下标表示 000b表示x=0,y=0,Z=0

tensorflow之argmax与axis_tensorflow_08

如果axis是0 就是沿着X方向变动。

X000 X100===》1  X001 X101===》1  X002 X102==》1

X010 X110==》1  X011 X111=》1 X012 X113==》1

所以输出是

tensorflow之argmax与axis_tensorflow_09