flask部署keras模型的加载预测问题
启动服务,加载keras模型,调用模型的预测函数(model.predict)时报错如下,但不通过服务,单独调用预测函数没有错误。
ValueError: Tensor Tensor(“...”, shape=(?, 6), dtype=float32) is not an element of this graph.
在model.predict()之前加上with 语句,将动态图固定:
import tensorflow as tf
graph = tf.get_default_graph()
global graph
with graph.as_default():
tensorflow的操作都是默认加载在一个默认的Graph中,所以如果为了避免出错,自己就要创建Graph以及Session,
如果上述方法不可行,可尝试:
import tensorflow as tf
import keras
graph = tf.get_default_graph()
sess = keras.backend.get_session()
global graph, sess
with sess.as_default():
with graph.as_default():
在tensorflow2.0中,如果要解决上述问题,只需进行迁移:
sess = tf.compat.v1.keras.backend.get_session()
global sess
with sess.as_default():