首页 > 解决方案 > 如何在 Conv Layer 中使用 dropout 在 tensorflow 中删除激活图?

问题描述

我正在尝试在卷积层中添加 dropout(尽管人们似乎不经常这样做)。

根据 cs231n,他们建议在所有激活图中删除激活图而不是单元(我认为这在某种程度上是有道理的,因为每个激活图都在不同位置提取相同的特征)。

在tensorflow中,我找不到任何API可以直接做到这一点,那我该怎么做呢?这是我第一次在 StackOverflow 中提出问题,我将感谢您的建议和答案。

标签: tensorflowconv-neural-networkdropout

解决方案


您实际上可以通过noise_shape参数使用可用的 dropout 函数来执行此操作。例如使用layersAPI:

x = tf.layers.dropout(x, noise_shape=[batch_size, 1, 1, features])

这将用于 2D 卷积和channels_last格式。我们只为图像宽度/高度生成单个噪声值,该噪声值将在图像尺寸上进行广播。但是,我们仍然为每个特征/激活图生成不同的噪声值。


推荐阅读