簡體   English   中英

如何在Keras中將自己的詞嵌入與像word2vec這樣的預訓練嵌入一起使用

[英]How to use own word embedding with pre-trained embedding like word2vec in Keras

我在CSV文件中存儲了一個共現矩陣,其中包含單詞和表情符號之間的關系,如下所示:

word emo1 emo2 emo3
w1   0.5   0.3  0.2
w2   0.8   0    0
w3   0.2   0.5  0.2

這個共現矩陣很大,有1584755行和621列。 我在Keras中有一個Sequential() LSTM模型,其中我使用了預訓練的(word2vec)詞嵌入。 現在,我想將共現矩陣用作另一個嵌入層。 我怎樣才能做到這一點? 我當前的代碼是這樣的:

model = Sequential()
model.add(Embedding(max_features, embeddings_dim, input_length=max_sent_len, weights=[embedding_weights]))
model.add(Dropout(0.25))
model.add(Convolution1D(nb_filter=nb_filter, filter_length=filter_length, border_mode='valid', activation='relu', subsample_length=1))
model.add(MaxPooling1D(pool_length=pool_length))
model.add(LSTM(embeddings_dim))
model.add(Dense(reg_dimensions))
model.add(Activation('sigmoid'))
model.compile(loss='mean_absolute_error', optimizer='adam')
model.fit( train_sequences , train_labels , nb_epoch=30, batch_size=16) 

另外,如果同現矩陣稀疏,那么在嵌入層中使用它的最佳方法是什么?

您可以使用Embedding圖層並設置自己的權重矩陣,如下所示:

Embedding(n_in, n_out, trainable=False, weights=[weights])

如果我理解正確, weights將是您的共現矩陣, n_in是行數, n_out是列數。

您可以在博客文章中找到更多信息和示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM