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
, Сервер по сути будет действовать как планировщик, и рабочий будет работать. Когда он заканчивается, он просто возвращает результат.
Я надеюсь, что это поможет вам, и еще раз извините, если мое предложение относительно возможной основной причины неверно.