You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

max pooling存在多个最大值时对应的索引应该如何选择?

池化内核存在多最大值时的索引标记规则

当kernel中存在多个等于最大值的数值时该如何处理?例如以下数值:

array([[0., 0.],
       [0., 0.]])

该组数值的最大值为0,此时对应的max indices存在两种可能的处理逻辑:

  • 方案1:将所有最大值出现的位置都标记为True
array([[ True,  True],
       [ True,  True]])
  • 方案2:仅标记最大值第一个出现的位置
array([[ True, False],
       [False, False]])

两种方案在现有框架和实现中都有使用:PyTorch默认采用最大值首次出现的位置标记方案,而部分自定义实现会采用全位置标记方案(核心逻辑为pos = np.where(result == view, 1, 0),会为所有最大值出现的位置标记为1)。

补充说明:前向传播阶段两种方案的输出没有区别,但在反向传播阶段会产生明显的梯度差异。例如如果上游梯度为[[1,1],[1,1]],全标记方案下当前节点得到的梯度为[[1,1],[1,1]],首次标记方案下当前节点得到的梯度为[[1,0],[0,0]]。

内容的提问来源于stack exchange,提问作者Sam-gege

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:45:02