pytorch的Embedding使用


torch.nn.Embedding存儲的是形如num_embeddings*embedding_dim的矩陣,以詞向量為例,num_embeddings表示詞向量的個數,embedding_dim表示詞向量的維度。

初始化:

它提供了從已知Tensor進行初始化的方法:nn.Embedding.from_pretrained

配合torch.from_numpy可以直接把numpy的array直接轉換到Embedding

nn.Embedding.from_pretrained(torch.from_numpy(words_vector.wv.vectors))

取值:
在使用的時候,傳入的是索引值張量,取出對應索引的詞向量,如下所示

embedding = nn.Embedding(10, 3)
print(embedding.weight)
# 根據索引取embedding中的詞向量 input = torch.LongTensor([[0,2,4,5],[4,3,2,0]]) embedding(input)

 輸出如下:

Parameter containing:
tensor([[-0.3226,  0.4114,  1.0047],
        [ 0.9196, -1.3295, -1.2954],
        [ 1.3443, -0.3448,  0.0851],
        [-0.2293, -1.3142, -1.0111],
        [-0.9291,  1.2002, -1.6681],
        [ 0.5507,  0.2129,  0.7609],
        [-0.3079, -1.5352, -0.0675],
        [ 0.8036, -0.2572,  0.4783],
        [-1.2597, -0.1978, -1.1519],
        [-0.7035, -0.0925,  0.1286]], requires_grad=True)

tensor([[[-0.3226,  0.4114,  1.0047],
         [ 1.3443, -0.3448,  0.0851],
         [-0.9291,  1.2002, -1.6681],
         [ 0.5507,  0.2129,  0.7609]],

        [[-0.9291,  1.2002, -1.6681],
         [-0.2293, -1.3142, -1.0111],
         [ 1.3443, -0.3448,  0.0851],
         [-0.3226,  0.4114,  1.0047]]], grad_fn=<EmbeddingBackward>)

對於通過gensim構造的詞向量,如fastText,可以通過詞來獲取索引:

i = model.wv.vocab['hello'].index

 


免責聲明!

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



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