2016-08-29 3 views
5

Я хотел бы выделить объекты, закрыть очередь, чтобы другие сеансы уничтожили все оставшиеся предметы, а затем снова откроем их для следующей эпохи. Это возможно?Может ли очередь TensorFlow быть вновь открыта после ее закрытия?

q = tf.FIFOQueue(...) 
close_q = q.close() 
reopen_q = #??? 

with tf.Session([...]) as sess: 
    [...] 
    sess.run(close_q) 
    [...] 
    sess.run(reopen_q) 

ответ

10

Там нет никакого способа, чтобы повторно открыть закрытую очередь, но (только если вы используете несколько сеансов) есть обходной путь ::

  1. Создайте свою очередь в with tf.container(name): блок, который оборачивает только очереди и где name не используется ни для каких других блоков tf.container().

  2. Перед тем, как хочет, чтобы возобновить очередь, вызов tf.Session.reset(..., [name]), где name это имя контейнера, созданный на шаге 1. Это приведет к очереди, чтобы быть воссоздано при его следующем использовании, и он будет в открываемом государство.

+0

Спасибо снова и снова! :) – MiniQuark

+0

Спасибо, вот именно то, что я искал! – lhlmgr

+7

Что вы вставляете вместо точек? Когда я вызываю 'tf.Session.reset (target = None, [name])', сеанс будет закрыт. Нужно ли мне создавать новый сеанс? Ура! – lhlmgr

Смежные вопросы