關於nn.embedding的中padding_idx的含義

自然語言中使用批處理時候, 每個句子的長度並不一定是等長的, 這時候就需要對較短的句子進行padding, 填充的數據一般是0, 這個時候, 在進行詞嵌入的時候就會進行相應的處理, nn.embedding會將填充的映射爲0

其中padding_idx就是這個參數, 這裏以3 爲例, 也就是說補長句子的時候是以3padding的, 這個時候我們液晶padding_idx設爲3

import torch
import torch.nn as nn

embed = nn.Embedding(10, 3, padding_idx=3) # padding_idx 默認是0
embed.weight

你會看到所以爲3的向量爲0, 讓我們再舉個栗子

x = torch.tensor([[2, 2, 3, 3], [1, 2, 5, 4]])
embed(x)

有兩個句子, 長度是4, 但是第一個句子長度只有2, 另外其是由3來padding的, 這時候通過embedding我們可以看到:

映射後是0了,這樣繼續進行後續的計算了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章