不涉及具體**,只是記錄一下自己的疑惑。
我們知道對於在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自帶的那種權重初始化,得到乙個單詞-索引-權重對應的關係。預訓練物件得到的是單詞-權重。我們要得到的是索引-權重。
理解了上面這些話,看那些**就比較容易了。這裡還會涉及到乙個處理未登入詞的問題,就是預訓練詞向量中未出現的單詞我們怎麼處理,一般是置為零。
pytorch 使用預訓練層
將其他地方訓練好的網路,用到新的網路裡面 1.原先已經訓練好乙個網路 autoencoder fc 2.首先載入該網路,讀取其儲存的引數 3.設定乙個引數集 cnnpre autoencoder fc cnnpre.load state dict torch.load autoencoder fc....
pytorch 修改預訓練模型
torchvision中提供了很多訓練好的模型,這些模型是在1000類,224 224的imagenet中訓練得到的,很多時候不適合我們自己的資料,可以根據需要進行修改。1 類別不同 coding utf 8 import torchvision.models as models 呼叫模型 mode...
pytorch 載入預訓練模型
pytorch的torchvision中給出了很多經典的預訓練模型,模型的引數和權重都是在imagenet資料集上訓練好的 載入模型 方法一 直接使用預訓練模型中的引數 import torchvision.models as models model models.resnet18 pretrai...