Интерфейс запуска сеанса tenorflow повторно вводится? - PullRequest
0 голосов
/ 08 мая 2018

Мне просто интересно, является ли интерфейс запуска сеанса tenorflow реентерабельным, потому что в моем случае несколько потоков могут обращаться к одному сеансу.Кстати, я использую API Тенорроу C ++.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Я нахожу ответ в исходном коде tenorflow. тензор потока / core / public / session.h, в своем комментарии:

// A Session allows concurrent calls to Run(), though a Session must
/// be created / extended by a single thread.
///
/// Only one thread must call Close(), and Close() must only be called
/// after all other calls to Run() have returned.
0 голосов
/ 08 мая 2018

В интерфейсе python один и тот же tf.Session может использоваться с разными потоками с некоторой осторожностью, даже если он остается свойством потока, который его создал. Я полагаю, что аналогичная ситуация в C ++.

Из документов :

N.B. Сеанс по умолчанию является свойством текущего потока. если ты создать новый поток, и хотите использовать сеанс по умолчанию в этом поток, вы должны явно добавить with sess.as_default(): в этом функция потока.

N.B. Ввод блока with sess.as_default(): не влияет на текущий график по умолчанию. Если вы используете несколько графиков, и sess.graph отличается от значения tf.get_default_graph, вы необходимо явно ввести блок with sess.graph.as_default():, чтобы сделать sess.graph график по умолчанию.

...