gpt4 book ai didi

python - 在 pyspark 中使用带有 dropout 的 Keras 序列化模型

转载 作者:行者123 更新时间:2023-12-01 03:12:11 37 4
gpt4 key购买 nike

我有几个使用 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/

如果我确实从模型中删除了 dropout,它就会起作用。然而,我不明白如何实现一些东西,让我在训练阶段保持退出,如常见问题解答中所述。

根据模型代码,如何实现这一目标?

最佳答案

你可以尝试(在你的预测之前)

import keras.backend as K
K.set_learning_phase(0)

它应该将你的学习阶段设置为 0(测试时间)

关于python - 在 pyspark 中使用带有 dropout 的 Keras 序列化模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42782869/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com