问题描述
我正在使用 word2vec 来训练和获取嵌入矩阵。但是,字典包含从 0 开始的单词索引。
但是,当我使用 keras 标记器时,我得到索引从 1 这是我将嵌入矩阵作为权重传递的嵌入层。
embedded = Embedding(len(embeddings.vocab),output_dim = output_dim,input_length = test_X.shape[1],weights=[embeddings_matrix],trainable=True)(_input)
我的输入数据就像
arr = [
[1,1,2,3,4],[1,4,5,.....
]
然后,我在我的阵列上使用 pad_sequence 并得到
arr = [
[1,0],0]
]
这里的 0 只是为了填充序列以具有相同的长度。但是,它将由我的嵌入矩阵的索引 0 的向量表示,这是错误的。我该如何处理?
解决方法
来自 pad_sequences 文档:
参数:value = Float 或 String,填充值。 (可选,默认为 0。)
所以你可以做类似的事情
pad_sequences(sequence,value='PAD')
应该将数组更改为:
arr = [
[1,1,2,3,4,'PAD','PAD'],[1,5,'PAD']
]
希望消除任何歧义。