Справочная информация:
У меня есть несколько сложных алгоритмов обучения подкрепления, которые я хочу запустить в нескольких потоках.
Проблема
При попытке вызвать sess.run
в потоке я получаю следующее сообщение об ошибке:
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
Код, воспроизводящий ошибку:
import tensorflow as tf
import threading
def thread_function(sess, i):
inn = [1.3, 4.5]
A = tf.placeholder(dtype=float, shape=(None), name="input")
P = tf.Print(A, [A])
Q = tf.add(A, P)
sess.run(Q, feed_dict={A: inn})
def main(sess):
thread_list = []
for i in range(0, 4):
t = threading.Thread(target=thread_function, args=(sess, i))
thread_list.append(t)
t.start()
for t in thread_list:
t.join()
if __name__ == '__main__':
sess = tf.Session()
main(sess)
Если я запускаю тот же код вне потока, он работает правильно.
Может кто-нибудь дать некоторое представление о том, как использовать Tensorflowсеансы правильно с потоками Python?