一个相当简单的,但现在只是变得疯狂。
当应用 dropout 来规范我的神经网络时,应该在哪里应用它?
对于示例,让我们想象 2 个卷积层,然后是 1 个全连接层。 “A2”是第二个卷积层的激活。我应该将 dropout 应用于这些激活,还是应该将其应用于以下全连接层的权重?还是真的无所谓?
我的直觉告诉我,正确的做法是在全连接层的权重上应用 dropout,而不是在第二个 conv 层的激活中,但我在很多地方看到了相反的情况。
我见过两个类似的问题,但没有一个有令人满意的答案。
最佳答案
两者都有效。当您删除激活时,它被称为 dropout ,当您删除权重时,它被称为 dropconnect 。 DropConnect 是 DropOut 方法的通用版本。 DropConnect 论文中的这张图片很好地解释了这一点。
在 Dropconnect 的情况下,如果节点 u3
的所有权重为零(3/4th 为零),这与在 r3
节点上应用 dropout 相同。另一个区别在于权重的掩码矩阵。
左一表示 dropconnect 的掩码矩阵,而右一表示将 dropout 应用于两个连续层时的有效掩码矩阵。
注意 dropout 的掩码矩阵中的模式。
作者 show that dropconnect 在基准数据集中击败了 dropout,并产生了最先进的结果。
因为 dropconnect 是我会使用它的通用版本。
关于python - 激活或权重丢失,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49512702/