Загрузите модель keras и поместите ее в переменную без перезагрузки - PullRequest
0 голосов
/ 27 марта 2019

Загрузка модели в начале моего приложения Flask с последующим использованием ее для прогнозов в моих конечных точках приводит к ошибке

'ValueError: Tensor Tensor ("dens / Softmax: 0", shape = (?, 4), dtype = float32) не является элементом этого графа.'

model = keras.models.load_model("model.h5")

@app.route("/predict", methods=["POST"])
def predict():
    json_data = request.get_json()

    variable = preparePredictionInput(
        [variable], alphabetDict, maxVariableLength)
    prediction = list(model.predict(variable, steps=1, verbose=1)[0])

но загрузка модели keras каждый раз, когда вызывается конечная точка прогнозирования, кажется, работает отлично

@app.route("/predict", methods=["POST"])
def predict():
    json_data = request.get_json()
    model = keras.models.load_model("model.h5")

    variable = preparePredictionInput(
        [variable], alphabetDict, maxVariableLength)
    prediction = list(model.predict(variable, steps=1, verbose=1)[0]) 

есть ли способ это исправить? это довольно радикально снижает производительность при необходимости каждый раз перезагружать модель.

1 Ответ

0 голосов
/ 28 марта 2019

Semms, как ваша переменная модели не является глобальной.Посмотрите на код ниже:

def init():
  global model
  model = lkeras.models.load_model("model.h5")

@app.route("/predict", methods=["POST"])
def predict():
    json_data = request.get_json()
    variable = preparePredictionInput([variable], alphabetDict, maxVariableLength)
    prediction = list(model.predict(variable, steps=1, verbose=1)[0])


if __name__ == "__main__":
    init()
    app.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...