Безопасна ли нить градиентного спуска в Tensorflow? - PullRequest
0 голосов
/ 22 марта 2019

Я использую Tensorflow для реализации алгоритма обучения с подкреплением и хочу, чтобы шаги обучения происходили в другом потоке, чтобы агент мог более плавно взаимодействовать со средой. (Это похоже на случай, когда мы выполняем градиентный спуск в одном потоке и делаем вывод в другом потоке). Это наводит меня на мысль, является ли Tensorflow безопасным для потоков? Должен ли я получить блокировку всякий раз, когда я звоню sess.run?

Я провел некоторый тест и не обнаружил ошибок, когда не пользуюсь шкафчиком. Этот Q & A говорит о том же результате, что sess.run является поточно-ориентированным. Однако документ AdamOptimizer имеет параметр use_locking, который указывает на то, что оптимизация не является поточно-ориентированной.

Теперь я в замешательстве: нужно ли в этом случае использовать блокировку? Если ответ «да», то что мне делать: установить use_locking=True или использовать threading.Lock всякий раз, когда вызывается sess.run?

...