给定大输入时,TensorFlow reduce_sum返回部分错误的输出

时间:2018-06-11 22:10:49

标签: tensorflow

我遇到的问题是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

0 个答案:

没有答案