Python 如何将Keras CNN模型部署到webservice?

Python 如何将Keras CNN模型部署到webservice?,python,tensorflow,request,keras,google-cloud-ml,Python,Tensorflow,Request,Keras,Google Cloud Ml,我目前正在尝试为Web服务部署Keras卷积神经网络 我曾尝试将我保存的keras hdf5模型转换为tensorflow.js模型并进行部署,但由于该模型相对健壮,因此占用了大量的客户端内存,因此降低了客户端应用程序的速度 因此,我试图找出一种方法,在云中部署模型,并通过一个带有图像的web应用程序的请求进行预测,然后接收一个包含预测张量的响应。我知道gcloud可能有一些类似的功能,但我不确定如何开始 本质上,我是在问是否有任何服务可以让我部署一个预先训练和保存的卷积神经网络模型,我可以在请

我目前正在尝试为Web服务部署Keras卷积神经网络

我曾尝试将我保存的keras hdf5模型转换为tensorflow.js模型并进行部署,但由于该模型相对健壮,因此占用了大量的客户端内存,因此降低了客户端应用程序的速度

因此,我试图找出一种方法,在云中部署模型,并通过一个带有图像的web应用程序的请求进行预测,然后接收一个包含预测张量的响应。我知道gcloud可能有一些类似的功能,但我不确定如何开始


本质上,我是在问是否有任何服务可以让我部署一个预先训练和保存的卷积神经网络模型,我可以在请求中向其发送图像,并使用该模型返回预测的张量?

您可以导出一个经过训练的Keras模型并使用它提供服务。TF服务允许托管模型并通过gRPC或REST请求调用它们。您可以部署一个flask应用程序,其端点接受图像,将其包装为有效负载,并通过
请求
模块调用您的模型

将模型导出为可服务的代码如下所示:

import tensorflow as tf

# The export path contains the name and the version of the model
model = keras.models.load_model('./mymodel.h5')

# Feth the Keras session and save the model
with keras.backend.get_session() as sess:
    tf.saved_model.simple_save(
        sess,
        export_dir,
        inputs={'images': model.input},
        outputs={t.name:t for t in model.outputs})
requests.post('http://ip:9000/v1/models/MyModel:predict', json=payload)
这将存储TF服务所需的文件。从该目录中,您可以按如下方式承载模型:

tensorflow_model_server --model_base_path=$(pwd) --rest_api_port=9000 --model_name=MyModel
您的请求将如下所示:

import tensorflow as tf

# The export path contains the name and the version of the model
model = keras.models.load_model('./mymodel.h5')

# Feth the Keras session and save the model
with keras.backend.get_session() as sess:
    tf.saved_model.simple_save(
        sess,
        export_dir,
        inputs={'images': model.input},
        outputs={t.name:t for t in model.outputs})
requests.post('http://ip:9000/v1/models/MyModel:predict', json=payload)

<> > <代码>有效载荷< /代码>是包含请求映像的字典。

如果您想单击部署谷歌云上的模型的解决方案,请考虑使用。首先,按照@sdcbr响应中的说明导出您的
SavedModel
。将模型复制到GCS,然后只需创建模型和版本:

gcloud ml-engine models create "my_image_model"
gcloud ml-engine versions create "v1"\
    --model "my_image_model" --origin $DEPLOYMENT_SOURCE
或者,更简单的是,只需点击几下,即可使用云控制台完成上述操作


您将获得一个无服务器REST端点,它包括身份验证和授权、自动缩放(包括缩放到零)以及日志记录和监视,而无需编写或维护一行代码。

我们通常使用Flask为此类模型构建api。假设您有一个需要加载到不同服务器中的大型模型,通过在flask中构建一个简单的RESTAPI,客户端应用程序可以使用图像发出请求,然后api将返回响应。与模型相关的事情发生在Flask后端。您应该使用tf.saved_Model.simple_save():很好,我不知道,我会检查它并更新我的答案。谢谢。当我试图将模型导出为可服务时,我收到一个错误:“RuntimeError:试图使用一个关闭的会话。”我如何补救这个问题?您是否在笔记本中运行代码?您可以查看更多示例代码。请注意,对于图像模型,我们正在引入新的硬件。要访问它,请发送电子邮件至cloudml-feedback@google.comI“我的模型带有.pb文件和相关变量文件,保存在谷歌云存储上,并链接到ml引擎中的一个模型。如何查找post请求的URL或实际使用模型进行预测?您可能会发现使用中所述的客户端库最简单,尤其是获取身份验证令牌。直接的答案是