Keras>在不同的机器上使用训练有素的模型使用不同的python版本

时间:2017-12-21 13:28:19

标签: python linux windows tensorflow keras

我正在开发一个ML项目,并使用keras支持Tensorflow。我需要在Python 3.5我的本地Windows机器上进行培训,保存模型,然后将模型复制到linux上的虚拟机(也运行3.5),该模型将使用该模型进行预测。

任务看起来非常简单明了,但是在调用predict函数时遇到错误。

ValueError: Tensor Tensor("activation_1/Sigmoid:0", shape=(?, 1), dtype=float32) is not an element of this graph.

我认为这可能是一个平台差异问题,所以我在Linux机器上训练我的模型(使用Python 3.4),但我仍然在预测虚拟机上得到相同的错误。

我想知道错误的原因是操作系统还是Python版本差异还是别的?在每个平台上单独进行模型训练,保存然后加载和预测工作正常。

1 个答案:

答案 0 :(得分:0)

原来问题出在保存部分。我使用ModelCheckpoint回调来保存最佳模型

model.fit(..., callbacks = [ModelCheckpoint(filepath='model.h5', save_best_only=True)])

在网上搜索并尝试了一些不同的建议后,我删除了那部分,并保存了这样的模型

model.save('model.h5')

这解决了这个问题。