如何在 Conv Layer 中使用 dropout 来删除 tensorflow 中的激活图?
How can I use dropout in Conv Layer to drop activation maps in tensorflow?
我正在尝试在卷积层中添加 dropout(尽管人们似乎不常这样做)。
根据cs231n,他们建议在所有激活图中删除激活图而不是单元(我认为这在某种程度上是有道理的,因为每个激活图都在不同位置提取相同的特征)。
在tensorflow中,我找不到任何API可以直接做到这一点,那我该怎么做呢?
这是我第一次在 Whosebug 中提问,非常感谢您的建议和解答。
您实际上可以通过 noise_shape
参数使用可用的 dropout 函数来执行此操作。例如。使用 layers
API:
x = tf.layers.dropout(x, noise_shape=[batch_size, 1, 1, features])
这适用于二维卷积和 channels_last
格式。我们只为图像 width/height 生成一个噪声值,它将在图像维度上传播。但是,我们仍然为每个 feature/activation 地图生成不同的噪声值。
我正在尝试在卷积层中添加 dropout(尽管人们似乎不常这样做)。
根据cs231n,他们建议在所有激活图中删除激活图而不是单元(我认为这在某种程度上是有道理的,因为每个激活图都在不同位置提取相同的特征)。
在tensorflow中,我找不到任何API可以直接做到这一点,那我该怎么做呢? 这是我第一次在 Whosebug 中提问,非常感谢您的建议和解答。
您实际上可以通过 noise_shape
参数使用可用的 dropout 函数来执行此操作。例如。使用 layers
API:
x = tf.layers.dropout(x, noise_shape=[batch_size, 1, 1, features])
这适用于二维卷积和 channels_last
格式。我们只为图像 width/height 生成一个噪声值,它将在图像维度上传播。但是,我们仍然为每个 feature/activation 地图生成不同的噪声值。