CuDNNLSTM和LSTM模型权重加载,model.evaluate()问题

时间:2018-02-22 21:13:55

标签: tensorflow deep-learning keras

我培训了双向CuDNNLSTM文本分类模型,model.evaluate(x_test, y_test, batch_size=BATCH_SIZE)给了我[('loss', 0.39137715717178684), ('acc', 0.9012292817679558)]。这就是我所期待的!

现在,当我在新的双向LSTM模型中加载相同的模型权重(在CPU上运行模型)时,通过修改CuDNNLSTM>在我的模型架构中的LSTM,我得到[('loss', 8.747908523430075), ('acc', 0.006823506011315417)]相同的测试数据。

有关此行为的任何建议吗?在LSTM模型中加载CuDNNLSTM模型权重时,是否还需要更新其他内容?我为我的其他模型做了同样的事情,它没有任何问题。

此外,参数编号在CuDNNLSTM和LSTM图层中似乎有所不同,即使一切都相同!

CuDNNLSTM: CuDNNLSTM

LSTM: LSTM

1 个答案:

答案 0 :(得分:2)

问题解决了!在Keras上查看此主题:https://github.com/keras-team/keras/issues/9463

LSTM图层中约为recurrent_activation。如果您将权重从CuDNNLSTM图层加载到LSTM图层,请确保在LSTM中使用 'sigmoid' 激活功能!