[英]Using Keras serialized model with dropout in pyspark
我有几个使用Keras构建的神经网络,到目前为止,我大多数时候都在Jupyter中使用它。 我经常使用joblib从scikit-learn中保存模型,并使用json + hdf5从Keras中保存模型,并在其他笔记本中使用它们而不会出现问题。
我制作了一个Python Spark应用程序,可以在集群模式下使用那些序列化的模型。 joblib模型运行正常,但是,我遇到了Keras的问题。
这是用于笔记本和pyspark的模型:
def build_gru_model():
model = Sequential()
model.add(Embedding(max_nb_words, 128, input_length=max_sequence_length, dropout=0.2))
model.add(GRU(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
return model
两者都以相同的方式调用:
preds = model.predict_proba(data, verbose=0)
但是,仅在Spark中,我得到了错误:
MissingInputError: ("An input of the graph, used to compute DimShuffle{x,x,x,x}(keras_learning_phase), was not provided and not given a value.Use the Theano flag exception_verbosity='high',for more information on this error.", keras_learning_phase)
我已经完成了强制搜索,发现: https : //github.com/fchollet/keras/issues/2430指向https://keras.io/getting-started/faq/
如果我确实从模型中删除了辍学,那就行得通。 但是,我无法理解如何实施一些使我在培训阶段保持辍学的方法,如常见问题解答中所述。
根据模型代码,如何做到这一点?
您可以尝试放置(在进行预测之前)
import keras.backend as K
K.set_learning_phase(0)
它应该将您的学习阶段设置为0(测试时间)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.