我不明白为什么以下代码的输出为[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
被视为可以对所有值进行连续求和吗?
答案 0 :(得分:3)
-1
表示最后一个轴;由于您具有2级张量,因此最后一个轴是第二个轴,即沿着行。因此,tf.reduce_sum
与axis=-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。
轴:要减小的尺寸。 我的理解:
tf.reduce_sum(x,-1)在这里等于tf.reduce_sum(x,1),因为只有2个维度。
[[7]
[56]]
由于此处没有'keepdims = True',[]将被删除,结果为[7,56]
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]]