Tensorflow session.run() не работает с HUG

Я борюсь с тензорным потоком session.run() с объятиями в питоне. Если я бегу session.run() без HUG для прогнозирования, это нормально. Но, если я запускаю это на обнимку, это не дает никакого результата (даже ошибки).

Кто-нибудь сталкивался с таким сценарием? Пожалуйста, помогите мне.

Мои окружения:

  • тензор потока версии 1.2.1
  • обнять 2.3.0
  • Python версия 3.5.2

1 ответ

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

Опять же, я не знаю, является ли это коренной причиной или нет, или даже если этот сценарий даже имеет смысл.

Что я могу предложить, основываясь на небольшом опыте, который у меня был с Tensorflow, чтобы установить другую архитектуру.

Если я правильно понимаю, то, что вы пытаетесь сделать сейчас, - вы хотите отправить запрос на сервер hug api, получить данные из этого запроса и передать их Tensorflow сессия. Вы хотите ждать Tensorflow предсказать что-то и вернуть этот прогноз пользователю, который сделал запрос.

Я бы подошел к этой проблеме немного по-другому. Я хотел бы, чтобы клиент установил websockets подключение. Клиент будет использовать это соединение для отправки данных на сервер. После получения этих данных сервер помещает их в очередь сообщений. Вы можете использовать настоящую очередь сообщений, такую ​​как RabbitMq или Kafka, но, если честно, если у вас нет приложения для качественного производства, вы можете просто использовать redis или даже mongo как очередь сообщений. Сообщения в этой очереди будут приниматься рабочим процессом, один из которых работает Tensoflow и будет использовать данные в сообщениях для выполнения прогноза. После выполнения прогноза данные будут помещены в другую очередь и будут получены сервером. Затем сервер вернется через websocket прогноз для клиента.

Главное, что вы решаете с помощью этого подхода, это разделение api сервер из Tensorflow работник. Это позволит вам отлаживать и тестировать каждую часть независимо. Более того, вы не будете забивать свой сервер, ожидая Tensorflow, Сервер по сути будет действовать как планировщик, и рабочий будет работать. Когда он заканчивается, он просто возвращает результат.

Я надеюсь, что это поможет вам, и еще раз извините, если мое предложение относительно возможной основной причины неверно.

Другие вопросы по тегам