以下代码计算数组的总和tf.scan
。
张量流会分配一个 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 机器内存不足。
我猜张量流永远不会尝试优化扫描。
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))
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)