pytorch中如何使用預訓練詞向量


不涉及具體代碼,只是記錄一下自己的疑惑。

我們知道對於在pytorch中,我們通過構建一個詞向量矩陣對象。這個時候對象矩陣是隨機初始化的,然后我們的輸入是單詞的數值表達,也就是一些索引。那么我們會根據索引,賦予每個單詞獨一無二的一個詞向量表達。在其后的神經網絡訓練過程中,每個單詞對應獨一無二的索引,從而對應自己的詞向量,詞向量會隨着迭代進行更新。

上面講的這個是使用pytorch詞向量的隨機初始化的流程。

但是我們如果使用預訓練的詞向量怎么辦呢?很多例子中,直接就給個代碼是類似這樣的:

self.word_embeds = nn.Embedding(vocab_size, embedding_dim)
pretrained_weight = np.array(pretrained_weight)
self.embed.weight.data.copy_(torch.from_numpy(pretrained_weight))

先是進行一個對象初始化,然后加載預訓練詞向量,然后把預訓練詞向量copy進去。

我們知道預訓練詞向量肯定也是一個詞向量矩陣對象,這里是通過單詞獲取詞向量權重。我們要做的就是做到類似pytorch自帶的那種權重初始化,得到一個單詞-索引-權重對應的關系。預訓練對象得到的是單詞-權重。我們要得到的是索引-權重。

理解了上面這些話,看那些代碼就比較容易了。這里還會涉及到一個處理未登錄詞的問題,就是預訓練詞向量中未出現的單詞我們怎么處理,一般是置為零。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM