【问题标题】:Why does Pytorch EmbeddingBag with mode "max" not accept `per_sample_weights`?为什么模式为“max”的 Pytorch EmbeddingBag 不接受“per_sample_weights”?
【发布时间】:2021-03-17 02:39:15
【问题描述】:

Pytorch 的 EmbeddingBag 允许对不同长度的嵌入索引集合进行高效查找 + 减少操作。 reduce 操作有 3 种模式:“sum”、“average”和“max”。使用“sum”,您还可以提供per_sample_weights 给您一个加权和。

为什么“max”操作不允许per_sample_weights?查看how it'simplemented,我只能假设在“Mul”操作之后执行“ReduceMean”或“ReduceMax”操作存在问题。这可能与计算梯度有关吗?


p.s:通过除以权重之和将加权和转换为加权平均值很容易,但对于“最大值”,您无法获得这样的加权等值。

【问题讨论】:

  • 如果您解释一下加权最大值的含义可能会有所帮助。
  • @MattF。在将权重应用于输入向量后应用最大操作。这样做并有效使用 EmbeddingBag 的唯一可能性是复制输入嵌入(在 GPU 内存中 - 在许多情况下不可行),将权重应用于所选嵌入,然后使用包。这可能比手动完成整个事情要快,尽管在内存中复制也很耗时,尤其是在有很多嵌入的情况下。

标签: python pytorch embedding weighted-average


【解决方案1】:

参数per_sample_weights 仅针对mode='sum' 实现,不是因为技术限制,而是因为开发人员没有发现“加权最大值”的用例:

我找不到“加权平均值”(可以通过加权和来模拟)和“加权最大值”的用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多