为 tensorflow/serving 导出不带 Dropout 层的 Keras LSTM

Exporting Keras LSTM without Dropout layers for tensorflow/serving

我注意到在使用 tensorflow/serving docker 容器部署 Keras LSTM 模型时,对 model:predict 的调用将 return 相同输入的不一致值。
经过一些研究,似乎是 Dropout 层导致了问题。

export/save 模型 没有 Dropout 层的正确方法是 tensorflow/serving?

不需要 fiddle Dropout 层,你的行为发生是因为模型没有正确导出。

在将模型导出为 tensorflow-only 格式之前,您应该将 learning_phase 设置为零,表示导出的模型应该在 inference/testing 模式下工作:

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

如果不这样做,则导出的模型的行为就像在训练中一样,此时 Dropout 不会按预期工作。您可以在 Keras blog.

找到更多详细信息