Ошибка в 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)
Запустите его успешно.
Я надеюсь, вам понравится это!