【问题标题】:Equivalent of torch EmbeddingBag相当于torch EmbeddingBag
【发布时间】:2021-09-30 15:30:14
【问题描述】:

Torch 声称带有 mode="sum" 的 EmbeddingBag 等效于 Embedding 后跟 torch.sum(dim=1),但是我该如何详细实现呢?假设我们有 “EE = nn.EmbeddingBag(n, m, mode="sum", sparse=True)",我们如何将“nn.EmbeddingBag”等效地替换为“nn.Embeeding”和“torch.sum”?非常感谢

【问题讨论】:

  • 这能回答你的问题吗? How embedding_bag exactly works in PyTorch
  • 您好伊万,谢谢您的回复。实际上,我在问这个问题之前已经检查了答案。我不知道如何以类似的方式为 nn.EmbeddingBag 而不是 nn.functional.EmbeddingBag 实现它。 nn.Embedding 似乎没有数字函数“sum”。

标签: pytorch embedding


【解决方案1】:

考虑以下示例,其中所有四个实现都产生相同的结果:

  • nn.EmbeddingBag:

    >>> embedding_sum = nn.EmbeddingBag(10, 3, mode='sum')
    >>> embedding_sum(input, torch.zeros(1).long())
    
  • nn.functional.embedding_bag:

    >>> F.embedding_bag(input, embedding_sum.weight, torch.zeros(1).long(), mode='sum')
    
  • nn.Embedding:

    >>> embedding = nn.Embedding(10, 3)
    >>> embedding.weight = embedding_sum.weight
    >>> embedding(input).sum(0)
    
  • nn.functional.embedding:

    >>> F.embedding(input, embedding_sum.weight).sum(0)
    

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多