Понимание распределения памяти для повторяющихся операций - PullRequest
0 голосов
/ 28 октября 2018

Я хотел бы понять, когда тензор потока выделяет память для повторяющихся операций.

Предположим, у меня есть периодическая операция 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])

Для backprop предположим, что

  • есть потери, связанные с итерацией;
  • следующий x подается с tf.stop_gradient.

Для 1) и 2), тензорный поток выделит память для всех операций в развернутом графе, или он выяснит, использовать только одну итерацию, как в 3)?

Любые ссылки на официальные документы приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...