keras安装_代码详解:构建一个简单的Keras+深度学习REST API
在本教程中,我們將介紹一個簡單的方法來獲取Keras模型并將其部署為REST API。本文所介紹的示例將作為你構建自己的深度學習API的模板/起點——你可以擴展代碼,根據API端點的可伸縮性和穩定性對其進行定制。
具體而言,我們將了解:
· 如何(以及如何不)將Keras模型加載到內存中,以便有效地進行推理
· 如何使用Flask web框架為我們的API創建端點
· 如何使用我們的模型進行預測,用JSON-ify轉換它們,并將結果反饋到客戶端
· 如何使用cURL和Python來調用我們的Keras REST API
在本教程結束時,你將能很好地理解創建Keras REST API所需的組件(以最簡單的形式)。
請隨意使用本指南中提供的代碼作為你自己的深度學習REST API起點。
配置開發環境
假設Keras已經配置并安裝在你的機器上。如果沒有,請確保使用官方安裝說明安裝Keras(https://keras.io/#installation)。
然后,需要安裝Flask (http://flask.pocoo.org/)(及其相關的依賴項),一個Python web框架,這樣就可以構建API端點了。還需要請求(http://docs.python-requests.org/en/master/),這樣就可以使用API了。
有關的pip安裝命令如下:
$ pip install flask gevent requests pillow
構建你的Keras REST API
Keras REST API獨立于一個名為run_keras_server.py的文件中。為了簡單起見,我們將安裝保存在一個文件中——安裝啟用也可以很容易地模塊化。
在 run_keras_server.py中,你會發現三個函數,即:
· load_model:用于加載訓練好的Keras模型,并為推理做準備。
· prepare_image:這個函數在通過我們的網絡進行預測之前對輸入圖像進行預處理。如果你沒有使用圖像數據,則可能需要考慮將名稱更改為更通用的prepare_datapoint,并應用一些可能需要的縮放/標準化。
· predict:API的實際端點可以將請求中的輸入數據分類,并將結果反饋給客戶端。
# import the necessary packagesfrom keras.applications import ResNet50from keras.preprocessing.image import img_to_arrayfrom keras.applications import imagenet_utilsfrom PIL import Imageimport numpy as npimport flaskimport io
# initialize our Flask application and the Keras modelapp = flask.Flask(__name__)model = None
第一個代碼片段處理導入了所需的程序包,并且對Flask應用程序和模型進行了初始化。
在此,我們定義load_model函數:
def load_model():
# load the pre-trained Keras model (here we are using a model
# pre-trained on ImageNet and provided by Keras, but you can
# substitute in your own networks just as easily)
global model
model = ResNet50(weights="imagenet")
顧名思義,這個方法負責將我們的架構實例化,并從磁盤加載權重。
為了簡單起見,將使用在ImageNet數據集上預先訓練過的ResNet50架構。
如果你正在使用自定義模型,則需要修改此函數以從磁盤加載架構+權重。
在對任何來自客戶端的數據進行預測之前,首先需要準備并預處理數據:
def prepare_image(image, target):
# if the image mode is not RGB, convert it
if image.mode != "RGB":
image = image.convert("RGB")
# resize the input image and preprocess it
image = image.resize(target)
image = img_to_array(image)
image = np.expand_dims(image, axis=0)
image = imagenet_utils.preprocess_input(image)
# return the processed image
return image
這個函數:
· 接受輸入圖像
· 將模式轉換為RGB(如果需要)
· 將大小調整為224x224像素(ResNet的輸入空間維度)
· 通過平均減法數組和縮放對陣列進行預處理
此外,在通過模型傳遞輸入數據之前,應該根據某一預處理、縮放或標準化來修改這個函數。
現在可以定義predict函數了——該方法會處理對/predict端點的任何請求:
@app.route("/predict
總結
以上是生活随笔為你收集整理的keras安装_代码详解:构建一个简单的Keras+深度学习REST API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ istringstream重新绑
- 下一篇: 常见25种深度学习模型的github代码