我在 python 中拥抱 tensorflow session.run()
。如果我在session.run()
没有 HUG 的情况下进行预测,那很好。但是,如果我在拥抱时运行它,它不会产生任何结果(甚至任何错误)。
有没有人遇到过这样的场景?请帮我。
我的环境:
- 张量流版本 1.2.1
- 拥抱 2.3.0
- 蟒蛇版本 3.5.2
我在 python 中拥抱 tensorflow session.run()
。如果我在session.run()
没有 HUG 的情况下进行预测,那很好。但是,如果我在拥抱时运行它,它不会产生任何结果(甚至任何错误)。
有没有人遇到过这样的场景?请帮我。
我的环境:
我不知道这是否是您的问题的原因,但也许它可能与hug
服务器的事实有关,因此它在某处有一些异步代码。也许正在发生的事情是,因为hug
正在尝试处理请求,它会启动会话但不等待它运行。
同样,我不知道这是否是根本原因,或者即使这种情况是否有意义。
不过,根据我的一点经验,我可以建议的Tensorflow
是建立一个不同的架构。
如果我理解正确,您现在要做的是,您想向 hug api 服务器发送请求,从该请求中获取数据并将其提供给Tensorflow
会话。您想等待Tensorflow
预测某些内容并将该预测返回给发出请求的用户。
我会以稍微不同的方式解决这个问题。我会让客户端建立websockets
连接。客户端将使用此连接将数据发送到服务器。收到此数据后,服务器会将其放入消息队列中。您可以使用像RabbitMq或Kafka这样的真正消息队列,但老实说,如果您没有生产质量的应用程序,您还不如只使用消息队列redis
,甚至mongo
作为消息队列。此队列中的消息将由一个正在运行的工作进程拾取,Tensoflow
并将使用消息中的数据来执行预测。在执行预测时,数据将被放置在不同的队列中并由服务器提取。然后服务器将通过websocket
对客户的预测。
您使用这种方法解决的主要问题是将api
服务器与Tensorflow
工作人员分开。这将允许您独立调试和测试每个部分。此外,您不会因为等待而阻塞服务器Tensorflow
。服务器本质上将充当调度程序,并且工作人员将工作。当它完成时,它只返回结果。
如果我对可能的根本原因的建议是错误的,我希望这会对您有所帮助并再次抱歉。