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]]
(第一次出现)
即使经过一次反向传播,内核值也不太可能保持相等。所以这应该不是一个真正的问题,不是吗?
内核中有多个值等于最大值怎么办?例如,对于这些值:
array([[0., 0.],
[0., 0.]])
max 只是 0。max indices 应该是什么样的?对于 all max:
的出现应该是 Truearray([[ 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]]
(第一次出现)
即使经过一次反向传播,内核值也不太可能保持相等。所以这应该不是一个真正的问题,不是吗?