Dropout(论文,解释)将一些神经元的输出设置为零。因此,对于 MLP,鸢尾花数据集可以具有以下架构:
4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)
它会像这样工作:
和 , , , , (为了简单起见,忽略偏见)。
和 和
在哪里 运算倍增逐点与(参见Hadamard 产品)。
因此我们只对矩阵进行采样每次,因此 dropout 成为节点与 0 的乘积。
但是对于 CNN,我不清楚到底是什么被丢弃了。我可以看到三种可能性:
- 删除完整的特征图(因此是内核)
- 删除内核的一个元素(将内核的一个元素替换为 0)
- 删除特征图的一个元素
请在您的答案中添加参考/引用。
我的想法
我认为千层面可以做到(3)(见代码)。这可能是最容易实现的。然而,更接近原始想法的可能是(1)。
Caffe 似乎类似(参见代码)。对于 tensorflow,用户必须决定(代码- 我不确定noise_shape=None
通过时会发生什么)。
应该如何
(2) 和 (3) 没有多大意义,因为它会导致网络增加空间位置的不变性,这可能是不希望的。因此(1)是唯一有意义的变体。但是我不确定如果您使用默认实现会发生什么。