首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将Keras CNN模型部署到webservice?

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

Stack Overflow用户
提问于 2018-08-01 22:49:31
回答 2查看 1.3K关注 0票数 2

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

我曾尝试将我保存的keras hdf5模型转换为tensorflow.js模型并部署,但它减慢了客户端应用程序的运行速度,因为该模型相对健壮,因此占用了客户端内存中的大量空间。

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

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

EN

回答 2

Stack Overflow用户

发布于 2018-08-01 22:52:12

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

将模型导出为servable的代码如下所示:

代码语言:javascript
复制
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})

这将存储TF服务所需的文件。从该目录中,您可以托管模型,如下所示:

代码语言:javascript
复制
tensorflow_model_server --model_base_path=$(pwd) --rest_api_port=9000 --model_name=MyModel

然后,您的请求将如下所示:

代码语言:javascript
复制
requests.post('http://ip:9000/v1/models/MyModel:predict', json=payload)

其中payload是包含请求图像的字典。

票数 2
EN

Stack Overflow用户

发布于 2018-08-01 23:14:26

如果您想要一个在Google Cloud上为您的模型提供服务的点击部署解决方案,请考虑使用Cloud ML Engine's Online Prediction service。首先,按照@sdcbr响应中的说明导出您的SavedModel。将模型复制到GCS,然后只需创建一个模型和一个版本:

代码语言:javascript
复制
gcloud ml-engine models create "my_image_model"
gcloud ml-engine versions create "v1"\
    --model "my_image_model" --origin $DEPLOYMENT_SOURCE

或者,更简单的是,只需点击几下,即可使用云控制台完成上述操作!

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51636337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档