我遇到的问题是TensorFlow中的reduce_sum
在大于特定大小的输入上返回的值不正确。
具体地,如果我生成随机64x512x4096x2张量并比较reduce_sum
在第三轴与手动添加的第0和第1元件中的第三维,如所预期,将得到的张量在所有134217728个元件是相同的。
但是,如果我使用 65 x512x4096x2张量执行完全相同的步骤,则得到的张量在第一个134217728元素上达成一致但在剩余的2097152中有所不同。
我在几台不同的机器和GPU上试过这个。这是一个自包含的片段,应该重现结果:
import tensorflow as tf
with tf.Session() as sess:
test = tf.random_uniform([64, 512, 4096, 2])
print(tf.reduce_sum(tf.to_int32(tf.logical_not(tf.equal(test[:,:,:,0] + test[:,:,:,1], tf.reduce_sum(test, axis=3))))).eval())
# 0
print(tf.reduce_sum(tf.to_int32(tf.equal(test[:,:,:,0]+test[:,:,:,1], tf.reduce_sum(test, axis=3)))).eval())
# 134217728
test = tf.random_uniform([65, 512, 4096, 2])
print(tf.reduce_sum(tf.to_int32(tf.logical_not(tf.equal(test[:,:,:,0] + test[:,:,:,1], tf.reduce_sum(test, axis=3))))).eval())
# 2097152
print(tf.reduce_sum(tf.to_int32(tf.equal(test[:,:,:,0] + test[:,:,:,1], tf.reduce_sum(test, axis=3)))).eval())
# 134217728