Deep learning Keras中零填充嵌入层的索引

Deep learning Keras中零填充嵌入层的索引,deep-learning,gensim,keras,Deep Learning,Gensim,Keras,我正在Keras中构建一个RNN模型,用于从gensim中嵌入单词的句子。我正在用手套向量初始化嵌入层。因为这是一个序列模型,句子长度可变,所以向量是零填充的。e、 g [0, 0, 0, 6, 2, 4] 假设手套向量具有维度[NUM\u VOCAB,embedded\u SIZE]。零索引被屏蔽(忽略),以便获得正确的单词索引,我们是否向手套矩阵中添加额外的列,以便维度为:[NUM\u VOCAB+1,embedded\u SIZE] 似乎存在一个不必要的向量,除非有更优雅的方法,否则模型

我正在Keras中构建一个RNN模型,用于从gensim中嵌入单词的句子。我正在用手套向量初始化嵌入层。因为这是一个序列模型,句子长度可变,所以向量是零填充的。e、 g

[0, 0, 0, 6, 2, 4]
假设手套向量具有维度
[NUM\u VOCAB,embedded\u SIZE]
。零索引被屏蔽(忽略),以便获得正确的单词索引,我们是否向手套矩阵中添加额外的列,以便维度为:
[NUM\u VOCAB+1,embedded\u SIZE]

似乎存在一个不必要的向量,除非有更优雅的方法,否则模型将对其进行估计

glove = Word2Vec.load_word2vec_format(filename)
embedding_matrix = np.vstack([np.zeros(EMBEDDING_SIZE), glove.syn0])

model = Sequential()

# -- this uses Glove as inits
model.add(Embedding(NUM_VOCAB, EMBEDDING_SIZE, input_length=maxlen, mask_zero=True,
                           weights=[embedding_matrix]))

# -- sequence layer
model.add(LSTM(32, return_sequences=False, init='orthogonal'))
model.add(Activation('tanh'))

...

谢谢

你们都弄明白了吗?我只是在原始嵌入矩阵中添加了零(或随机)向量。因此,如果我使用索引0作为填充,使用索引1作为OOV,原始嵌入将增加两行。然后,当向量化每个单词时,I+2到每个单词id。我认为这是可行的。如果你在我的赏金到期前添加你的评论作为回答,我很乐意把它奖励给你(我想还剩一个小时)啊,糟了,它已经过期了。哦,好吧。谢谢你的评论,它回答了我的问题。