我培训了双向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图层中似乎有所不同,即使一切都相同!
答案 0 :(得分:2)
问题解决了!在Keras上查看此主题:https://github.com/keras-team/keras/issues/9463
LSTM图层中约为recurrent_activation
。如果您将权重从CuDNNLSTM图层加载到LSTM图层,请确保在LSTM中使用 'sigmoid' 激活功能!