无法使用dill加载和预测:ed keras顺序模型

时间:2017-06-19 11:33:09

标签: python tensorflow keras predict

我有keras LSTM型号:

model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(LSTM(128, implenetation=0))
model.add(Dropout(0.5))
model.add(Dense(n_classes))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='sgd')

我已经训练并倾倒到莳萝文件中。在同一台计算机上,稍后,我现在正尝试加载此模型并使用predict_proba对某些现在传入的数据进行预测。但是我得到了错误:

TypeError: Cannot interpret feed_dict key as Tensor: Tensor Tensor("embedding_1_input:0", shape=(?, 53), dtype=int32) is not an element of this graph. 

我找到this thread并尝试了该方法。装配和倾卸模型:

### Creating and dumping model
model.fit(X, labels)
dill.dump(model, open(model_file, 'wb'))

加载并进行预测,使用标记为# added的链接线程添加的行:

model = dill.load(open(model_file, 'rb'))
model._make_prediction_function()           # added
graph = tf.get_default_graph()              # added
with graph.as_default():                    # added
    model.predict_proba(new_X)

但现在我得到了一个不同的错误:

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

我误解了如何实现这个“解决方案”,或者是否有其他错误导致此问题?

1 个答案:

答案 0 :(得分:0)

为什么不使用" model.save(filepath)"和" model = load_model(filepath)"如上所述here

如果你真的想用dill来保存/加载图表,你能提供随机输入的完整代码吗?