4

gensim からの単語埋め込みを含む文の RNN モデルを Keras で構築しています。埋め込みレイヤーを 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