4

我正在 Keras 中为带有来自 gensim 的词嵌入的句子构建一个 RNN 模型。我正在使用 GloVe 向量初始化嵌入层。由于这是一个顺序模型并且句子具有可变长度,因此向量是零填充的。例如

[0, 0, 0, 6, 2, 4]

假设 GloVe 向量有维度[NUM_VOCAB, EMBEDDING_SIZE]。零索引被屏蔽(忽略),因此为了获得正确的单词索引,我们是否向 GloVe 矩阵添加了一个额外的列,所以维度是:[NUM_VOCAB+1, EMBEDDING_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'))

...

谢谢

4

0 回答 0