tensorflow之argmax与axis

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

一维矩阵的例子:

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

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

输出:

 二维矩阵的例子:

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)))

直接上输出吧:

 输出是一个矩阵

再调整一下参数:

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)))

输出如下:

 第一个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_第1张图片

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_第2张图片

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_第3张图片

 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方向最大数的索引

这里想将矩阵如果:

\begin{bmatrix} [1.0,2.0.3.0] &[6.0,5.0,4.0] \\ [10.0,11.0,12.0]&[9.0,8.0,7.0] \end{bmatrix}

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

\begin{bmatrix} [X000,X001,X002] &[X010,X011,X012] \\ [X100,X101,X102]&[X110,X111,X113] \end{bmatrix}

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

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

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

所以输出是

\begin{bmatrix} 1& 1& 1\\ 1&1 & 1 \end{bmatrix}

 

你可能感兴趣的:(TensorFlow)