【发布时间】:2017-07-19 11:26:46
【问题描述】:
根据关于 Dropout 的原始论文说,正则化方法可以应用于卷积层,通常可以提高它们的性能。 TensorFlow 函数 tf.nn.dropout 通过具有 noise_shape 参数来支持这一点,以允许用户选择张量的哪些部分将独立退出。但是,无论是论文还是文档都没有明确解释应该独立保留哪些维度,TensorFlow 对noise_shape 工作原理的解释也不清楚。
只有具有 noise_shape[i] == shape(x)[i] 的维度才会做出独立的决定。
我假设对于形状 [batch_size, height, width, channels] 的典型 CNN 层输出,我们不希望单个行或列自行退出,而是希望整个通道(这相当于完全连接的节点NN)独立于示例(即,可以为批次中的不同示例丢弃不同的通道)。我在这个假设中正确吗?
如果是这样,如何使用noise_shape 参数来实现具有这种特殊性的dropout?会不会:
noise_shape=[batch_size, 1, 1, channels]
或:
noise_shape=[1, height, width, 1]
【问题讨论】:
-
我不完全确定放弃整个频道是标准的。我在不同的地方读过不同的东西,在我看来,许多人独立地删除了单个元素(skalars),即将
noise_shape保留为默认值。
标签: machine-learning tensorflow neural-network conv-neural-network