我有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.
我误解了如何实现这个“解决方案”,或者是否有其他错误导致此问题?
答案 0 :(得分:0)
为什么不使用" model.save(filepath)"和" model = load_model(filepath)"如上所述here?
如果你真的想用dill来保存/加载图表,你能提供随机输入的完整代码吗?