Pytorch 產生 word embedding : 運用 nn.Embedding()
用法
torch.nn.
Embedding
(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2, scale_grad_by_freq=False, sparse=False, _weight=None)
num_embeddings (int) : embeddings 字典裡面有多少個詞
範例
import torch
import torch.nn as nn
from torch.autograd import Variable
# embedding 字典
word_dict = {'hello': 0, 'paul': 1, 'chao': 2} #三個詞,三個相對 tensors 數值
embeds = nn.Embedding(3, 10) #三個詞(tensors數值),設十維
#從 dictionary 產生 tensor 數值
paul_idx = torch.LongTensor([word_dict['paul']])
print(paul_idx)
#產生變數
paul_idx = Variable(paul_idx)
print(paul_idx)
#進行 embedding
paul_embed = embeds(paul_idx)
print(paul_embed)
結果
tensor([2])
tensor([2])
tensor([[ 1.3302, 0.4645, 0.5615, -0.0327, 1.5131, -1.9684, -0.8720, -0.5227, 1.2371, 0.6098]], grad_fn=)
最後便產生了一個十維的 word embedding 可供運用
沒有留言:
張貼留言