zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    uva 11248 最大流 ISAP
    【力扣】133. 克隆图
    【力扣】125. 验证回文串
    【力扣】130. 被围绕的区域
    【力扣】337. 打家劫舍 III
    【力扣】104. 二叉树的最大深度-及二叉树的遍历方式
    【力扣】392. 判断子序列
    【力扣】95. 不同的二叉搜索树 II
    【力扣】120. 三角形最小路径和
    【力扣】两个数组的交集 II
  • 原文地址:https://www.cnblogs.com/webbery/p/11766623.html
Copyright © 2011-2022 走看看