[英]How to deploy a Keras CNN Model to webservice?
我目前正在嘗試為網絡服務部署Keras卷積神經網絡。
我曾嘗試將保存的keras hdf5模型轉換為tensorflow.js模型並進行部署,但是由於該模型相對健壯,因此它占用了客戶端應用程序的速度,因而占用了客戶端內存中的大量空間。
因此,我試圖找到一種方法,將模型部署到雲中,並通過來自Web應用程序的請求(帶有圖像)進行預測,然后接收包含預測張量的響應。 我知道gcloud可能具有一些類似的功能或特性,但是我不確定如何入門。
本質上,我在問是否有任何服務可以讓我部署經過預訓練和保存的卷積神經網絡模型,可以向我發送請求中的圖像並使用該模型返回預測的張量?
您可以導出訓練有素的Keras模型並通過TensorFlow Serving進行服務 。 TF Serving允許托管模型並通過gRPC或REST請求調用它們。 您可以部署一個燒瓶應用程序,該應用程序的端點接受圖像,將其包裝為有效負載,然后通過requests
模塊調用模型。
將代碼導出為可服務模型的代碼如下所示:
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服務所需的文件。 在此目錄中,可以按以下方式托管模型:
tensorflow_model_server --model_base_path=$(pwd) --rest_api_port=9000 --model_name=MyModel
您的請求將如下所示:
requests.post('http://ip:9000/v1/models/MyModel:predict', json=payload)
payload
是包含您的請求圖像的字典。
如果您希望使用點擊部署解決方案在Google Cloud上提供模型,請考慮使用Cloud ML Engine的Online Prediction服務 。 首先,按照@sdcbr響應中的說明導出SavedModel
。 將模型復制到GCS,然后您只需創建一個模型和一個版本:
gcloud ml-engine models create "my_image_model"
gcloud ml-engine versions create "v1"\
--model "my_image_model" --origin $DEPLOYMENT_SOURCE
或者,甚至更簡單,只需單擊幾下,使用Cloud Console即可完成上述操作!
您將獲得一個無服務器的REST端點,該端點包括身份驗證和授權,自動縮放(包括縮放到零)以及日志記錄和監視,而無需編寫或維護一行代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.