这是参考论文Efficient Object Localization Using Convolutional Networks,据我所知,dropout 是在 2D 中实现的。
在阅读了 Keras 关于如何实现 Spatial 2D Dropout 的代码后,基本上实现了形状为 [batch_size, 1, 1, num_channels] 的随机二进制掩码。然而,这个空间 2D Dropout 究竟对形状为 [batch_size, height, width, num_channels] 的输入卷积块做了什么?
我目前的猜测是,对于每个像素,如果像素的任何层/通道具有负值,则该像素的整个通道将默认为零。它是否正确?
但是,如果我的猜测是正确的,那么如何使用形状为 [batch_size, height, width, num_channels] 的二进制掩码恰好在原始输入块的维度中给出通常的逐元素丢失(这是根据tensorflow 的原始 dropout 实现,将二进制掩码的形状设置为输入的形状)?因为这意味着如果 conv 块中的任何像素为负数,则整个 conv 块将默认为 0。这是我不太明白的令人困惑的部分。