当卷积核中有多个值等于最大值时,该怎么办?例如,对于以下这些值:
array([[0., 0.], [0., 0.]])
最大值简单地为0。最大值索引应该是什么样子的?是对于所有最大值出现的地方都标记为True:
array([[ True, True], [ True, True]])
还是第一个最大值出现的地方:
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]]
(第一个出现的地方)
回答:
即使只进行一次反向传播,卷积核的值也极不可能保持相等。所以这不应该是一个真正的问题,对吗?