【发布时间】:2020-12-31 17:44:36
【问题描述】:
我有 Python 3.6.9、Tensorflow 1.14.0 和 Jupyter Notebook 5.7.9。我在 Jupyter Notebook 中创建了一个神经网络并将其保存到一个文件中:
model = Sequential([
Dense(16, input_shape=(2,), activation="relu"),
Dense(len(classes), activation="softmax")
])
model.compile(optimizer="rmsprop", loss="mse")
# Training, testing, etc...
model.save("model.h5")
现在,我想在 Flask 服务器中加载这个保存的模型并预测一些输出:
model = load_model("model.h5")
y = model.predict(np.array([[1, 0]]))
但是,出现错误:
Tensor Tensor("dense_1/Softmax:0", shape=(?, 8), dtype=float32) 不是该图的元素。
所以我一直在寻找solution 并修改了 Flask 代码:
tf.keras.backend.clear_session()
model = load_model("model.h5")
model._make_predict_function()
y = model.predict(np.array([[1, 0]]))
现在,又出现了一个错误:
在图中未找到在 feed_devices 或 fetch_devices 中指定的 Tensor dense_input:0
我又在找solution:
tf.keras.backend.clear_session()
model = load_model("model.h5")
model._make_predict_function()
global graph
global sess
graph = tf.get_default_graph()
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
with graph.as_default():
tf.keras.backend.set_session(sess)
y = model.predict(np.array([[1, 0]]))
最后没有错误,但 model.predict 返回绝对糟糕(随机)的结果,即使 Jupyter Notebook 返回正确的结果 - 也许网络中的预训练权重被删除了?有什么办法可以解决吗?
【问题讨论】:
标签: python file tensorflow flask keras