我想了解tensorflow何时为重复操作分配内存。
假设我有一个经常性的操作f()
。据我所知,有三种常见的实现前向传递的方法:
1)展开图形
x_prev = ...
for t in range(T):
x = f(x_prev)
x_prev = x
2)使用python循环:
data = {}
x = tf.placeholder(...)
data[x] = ...
for t in range(T)
x_next = sess.run(f(x), feed_dict=data)
data[x] = x_next
3)使用tf.while_loop
:
i = tf.constant(0)
c = lambda i, x: i < T
b = lambda i, x: i, f(x)
r = tf.while_loop(c, b, [i, x])
对于反向传播,假设
x
被提供给tf.stop_gradient
。对于1)和2),tensorflow会为展开图中的所有操作分配内存,还是会像3)一样只计算一次迭代?
任何对官方文档的引用都欢迎。