【发布时间】: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