我曾经训练和测试过CNN的情绪分析。训练和测试数据以同样的方式准备,标记句子并给出唯一的整数:
tokenizer = Tokenizer(filters='$%&()*/:;<=>@[\\]^`{|}~\t\n')
tokenizer.fit_on_texts(text)
vocab_size = len(tokenizer.word_index) + 1
sequences = tokenizer.texts_to_sequences(text)
然后预先训练手套模型,为CNN创建嵌入矩阵:
^{pr2}$在这一点上,我还使用测试语句创建了这个矩阵,该矩阵后来作为权重传递到嵌入层:
e= Embedding(vocab_size, 200, input_length=maxSeqLength, weights=[embedding_matrix], trainable=False)(inp)
现在我想重新加载我的模型并用一些新数据进行测试,但这意味着嵌入矩阵不会包含新的单词数据。这个这让我想知道,即使在创建嵌入矩阵之前,我也不应该包含测试数据?如果没有,嵌入层是如何处理这些新词的?这一部分和这个问题相似,但我找不到答案: How does the Keras Embedding Layer work if word is not found? 谢谢
很简单。您提供的是vocab_大小,即嵌入层知道的单词数。如果您传递的索引超出了vocab_size(新词)的范围,它将被忽略,或者keras将抛出一个错误。在
这回答了您关于是否应该包含嵌入矩阵的所有数据的问题。是的,你应该。在
相关问题 更多 >
编程相关推荐