使用load_weights()时出现Shapes (m, a) and (n, a) are incompatible的bug

这个问题是由于emebedding matrix的维度在训练时和预测时不一致而导致的。
通常情况下,我们使用emebedding matrix之前,会先形成一个字典,这里我们暂时把这个字典叫做word_index。如果代码的作者没有考虑周全,那么就会导致训练和预测的时候会得到两个不同的word_index(因为训练时和预测时用的数据不一样),从而使得emebedding matrix的维度发生变化。
假设BUG为Shapes (m, a) and (n, a) are incompatible,那么可知训练时得到的len(word_index) + 1是m,预测时得到的len(word_index) + 1是n。
如果我们想正确运行代码,我们就不能在预测时重新生成一个word_index,我们预测时必须要使用训练时的word_index。因此这个问题最简单的解决方案就是,保存好训练时得到的word_index,在预测时进行调用,这样我们就能够正确加载我们在训练时获得的权重了。

你可能感兴趣的:(bug&solve,深度学习,python,nlp)