我正在Keras Build 一个RNN模型用于gensim的单词嵌入 . 我正在使用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'))
...
谢谢