了解重复操作的内存分配

时间:2018-10-28 20:22:13

标签: python python-2.7 tensorflow backpropagation tensorflow-gradient

我想了解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)一样只计算一次迭代?

任何对官方文档的引用都欢迎。

0 个答案:

没有答案