Ошибка в Keras с использованием бэкэнда Tensorflow на веб-сервере Flask.

Когда мы разрабатываем какое-то веб-приложение (бэкэнд), используя Flask и Keras, чтобы показать результаты во внешнем интерфейсе. У нас есть проблема, как описано в заголовке (см. изображение ниже).

ValueError: Tensor Tensor(“famv_predictions/Softmax:0”, shape=(?, 2), dtype=float32) is not an element of this graph.

Примечание. Чтобы ваш текст выглядел как код, выделите текст и нажмите «ctrl+alt+6».

Чтобы исправить это, нам нужно использовать сеанс по умолчанию, который загружается с нашими моделями, например:

# Load libraries
import flask
import tensorflow as tf
import keras
from keras.models import load_model

# instantiate flask 
app = flask.Flask(__name__)

# to load the model and save it for the entire environment use graph
global graph
graph = tf.get_default_graph()
model = load_model('games.h5', custom_objects={'auc': auc})

# define routing function (could be a blueprint as well)
@app.route("/predict", methods=["GET","POST"])
def someFunctionthatUseKerasModel():
    ...
    # You need to use the following line
    with graph.as_default():
       ...
       # here you can use your model as you want
       preds = model.predict(...)
       # If you want you can convert your predit results to json
       data = toDict(preds)
    # return a response in json format 
    return flask.jsonify(data)    

# start the flask app, allow remote connections 
app.run(host='0.0.0.0')

Мы загружаем нашу модель как глобальную переменную (в скрипте), а также нашу графовую сеть. Как только мы определим наш граф и модель, мы можем вызвать их из наших функций маршрута:

@name_blueprint.route("/somepath")
def respondeFunc():
  instructions ...
  ...
  ...
  with graph.as_default():
    predictions = model.predict(X_test)

Запустите его успешно.

Я надеюсь, вам понравится это!