tf.reduce_sum对axis = -1有什么作用?

时间:2018-11-26 17:51:17

标签: python tensorflow

我不明白为什么以下代码的输出为[7 56]

import tensorflow as tf

x = tf.constant([[1, 2, 4], [8, 16, 32]])
a = tf.reduce_sum(x, -1)  # [ 9 18 36]

with tf.Session() as sess:
  output_a = sess.run(a)
  print(output_a)

我知道逐行添加已经完成。但是,有人可以阐明为什么-1函数中的reduce_sum被视为可以对所有值进行连续求和吗?

2 个答案:

答案 0 :(得分:3)

-1表示最后一个轴;由于您具有2级张量,因此最后一个轴是第二个轴,即沿着行。因此,tf.reduce_sumaxis=-1会缩小(求和)第二维。

答案 1 :(得分:0)

我运行您的代码,实际上给了我一个不同的答案:

import tensorflow as tf
x = tf.constant([[1, 2, 4], [8, 16, 32]])
a = tf.reduce_sum(x, -1)  
tf.print(a)

答案是[7,56],加上1 + 2 + 4 = 7和8 + 16 + 32 = 56。

轴:要减小的尺寸。 我的理解:

  1. '-1'表示最后一个轴或尺寸。

tf.reduce_sum(x,-1)在这里等于tf.reduce_sum(x,1),因为只有2个维度。

  1. 尺寸为2 * 3(2行* 3列)。目标是删除最后一个维度“ 3”,结果应为2行:

[[7] [56]]

由于此处没有'keepdims = True',[]将被删除,结果为[7,56]

  1. 您可以测试此示例。注意:此处的“ -1”和“ 1”不同。

y = tf.constant([[[1, 2, 4], [1, 0, 3]],[[1,2,3],[2,2,1]]]) c = tf.reduce_sum(y, 1) # if (y,-1) will be [[7,4],[6,5]] tf.print(c) #[[2 2 7], [3 4 4]]