[英]Should the embedding layer be changed during training a neural network?
我是深度學習和 Pytorch 領域的新人。
最近在學習NER任務的pytorch教程示例之一時,發現nn.Embedding的embedding在訓練過程中發生了變化。
所以我的問題是在訓練網絡期間應該改變嵌入嗎?
如果我想將預訓練的嵌入(例如,經過訓練的 word2vec 嵌入)加載到 PyTorch 嵌入層中,在訓練過程中是否也應該更改預訓練的嵌入?
或者如何防止更新嵌入?
謝謝你。
人們可以在任務期間學習嵌入,針對手頭的任務對它們進行微調,或者保持原樣(前提是它們以前以某種方式學習過)。
在最后一種情況下,使用 word2vec 等標准嵌入最終會進行微調(使用小學習率),但使用提供的詞匯表和嵌入。 當涉及到當前的 SOTA 時,如 BERT 應始終對您的數據進行微調,但應以無監督的方式(如最初訓練的那樣)。
使用它們的最簡單方法是torch.nn.Embedding.from_pretrained
( docs ) 的靜態方法,並為 Tensor 提供您的預訓練數據。
如果您希望圖層可訓練,請傳遞freeze=False
,默認情況下它不是您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.