Python tensorflow能否扫描并仅保留最终结果?
下面的代码使用Python tensorflow能否扫描并仅保留最终结果?,python,tensorflow,Python,Tensorflow,下面的代码使用tf.scan计算数组的和。 tensorflow会分配一个6元素数组来保存这六个部分和吗? 或者,tensorflow足够聪明,只分配一个1元素数组来保存部分和 如何确定 import tensorflow as tf import numpy as np elems = np.array([1, 2, 3, 4, 5, 6]) s = tf.scan(lambda a, x: a + x, elems) # s == [1, 3, 6, 10, 15, 21] final_s
tf.scan
计算数组的和。
tensorflow会分配一个6元素数组来保存这六个部分和吗?
或者,tensorflow足够聪明,只分配一个1元素数组来保存部分和
如何确定
import tensorflow as tf
import numpy as np
elems = np.array([1, 2, 3, 4, 5, 6])
s = tf.scan(lambda a, x: a + x, elems)
# s == [1, 3, 6, 10, 15, 21]
final_s = s[-1] # final_s == 21
with tf.Session() as sess:
print(sess.run(final_s))
以下代码导致16 GB计算机内存不足 我猜tensorflow从未尝试优化扫描
import tensorflow as tf
import numpy as np
elems = tf.ones(int(1e9), dtype=np.float32) # 4GB
s = tf.scan(lambda a, x: a + x, elems)
final_s = s[-1]
with tf.Session() as sess:
print(sess.run(final_s))
theano足够聪明,可以优化扫描:即使使用
back\u prop=False
,它仍然会导致内存不足。tf.scan太令人失望了。如果您只想要最终结果,您应该使用tf.foldl
。对于我的第二个例子,这个例子可能更有效。@xdurch0tf.foldl
和back\u prop=False
仍然会导致内存不足。theano足够聪明,可以优化扫描:即使使用back\u prop=False
,它仍然会导致内存不足。tf.scan太令人失望了。如果你只想要最终结果,您应该使用tf.foldl
。对于我的第二个示例,在这种情况下,这个示例可能更有效。@xdurch0tf.foldl
和back\u prop=False
仍然会导致内存不足。