[我注意到,当使用带有tensorflow / serving docker容器的Keras LSTM模型进行部署时,对model:predict
的调用将为相同的输入返回不一致的值。经过一些研究,似乎是导致问题的原因是Dropout层。
导出/保存模型不带 Dropout层以使用tensorflow / serving服务的正确方法是什么?
不需要摆弄Dropout层,因为未正确导出模型,所以会发生您的行为。
在将模型导出为仅张量流格式之前,应将learning_phase
设置为零,指示导出的模型应在推理/测试模式下工作:
import keras.backend as K
K.set_learning_phase(0)
如果不执行此操作,则导出的模型的行为就像在训练中一样,此时Dropout无法正常工作。您可以在Keras blog中找到更多详细信息。