flask搭建Keras服務出現的問題解決辦法

2021-10-09 20:35:30 字數 3060 閱讀 1206

當使用keras訓練好了乙個識別模型後,如果採用線上部署為服務,一般情況下採用flask或者django進行服務搭建。在我電腦上使用的環境是keras 2.3.1、tensorflow 1.15.3這個版本。將手寫數字的識別模型使用flask部署為服務。**如下:

from flask import flask

from flask import request

import numpy as np

import keras

from keras import models

import tensorflow as tf

import cv2

#將network定義為全域性變數

錯誤的原因在於keras使用tensorflow作為後端時,tensorflow的操作都是預設載入在乙個預設的graph中,所以如果為了避免出錯,自己就要建立graph以及session。

針對這個問題進行修改,修改後的**如下:

from flask import flask

from flask import request

import numpy as np

import keras

from keras import models

import tensorflow as tf

import cv2

#tf2.x中為sess = tf.compat.v1.keras.backend.get_session()

255#在缺省會話與計算圖中進行模型的**

with sess.as_default():

with graph.as_default():

output=network.predict(test_img)

output=output.argmax(axis=

1)

output=

str(output)

return output

if __name__==

'__main__'

:'172.24.103.157'

,port=

6001

)

執行這個服務,可以看到已經成功了。

在使用flask進行keras模型**的時候,還有一種錯誤會出現,比如使用keras 2.2和tensorflow 1.15會出現一種執行緒錯誤,這種解決辦法是將flask以單執行緒進行執行,網上很多說法是將keras和tensorflow的版本進行降級,在我看來是不需要這種做法的。

'172.24.103.157'

,port=

6001

,threaded=

false

)其實只要tensorflow和keras的版本一一對應上,是不會出現這個問題的。keras與tensorflow的版本對應從這個網頁裡可以檢視。

flask快速搭建服務

flask快速搭建服務 1 文字請求 伺服器端 示例 核心函式 request.form.get house code from split address ner import load model,split address from up three import addresssplit 3...

Keras搭建模型

好了,上 了。敲黑板!import keras import numpy as np from keras.utils import plot model import matplotlib.pyplot as plt 第乙個網路模型 輸入為16維 input1 keras.layers.input...

使用 Keras 搭建 DNN

from keras.datasets import mnist import numpy as np x train,y train x test,y test mnist.load data print np.shape x train np.shape x test 60000,28,28 1...