max pooling 当有多个最大值时,索引应该是什么?

maxpooling what should the indices be when there're multiple max values?

内核中有多个值等于最大值怎么办?例如,对于这些值:

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

max 只是 0。max indices 应该是什么样的?对于 all max:

的出现应该是 True
array([[ True,  True],
       [ True,  True]])

第一个出现最大值:

array([[ True, False],
       [False, False]])

Pytorch 使用第一次出现的最大值,而一些 source 使用另一个(他使用 pos = np.where(result == view, 1, 0),它基本上记录 1 为所有出现的最大值)。

编辑:对于前向传播无所谓,但是在反向传播时,比如上游梯度为[[1,1],[1,1]],那么当前节点的梯度将有所不同:[[1,1],[1,1]](所有出现)与 [[1,0],[0,0]](第一次出现)

即使经过一次反向传播,内核值也不太可能保持相等。所以这应该不是一个真正的问题,不是吗?