根据Dropout的原始论文所述,正则化方法可以应用于卷积层,并经常提高其性能。TensorFlow函数
如果是这样,那么如何使用
tf.nn.dropout
通过具有noise_shape
参数来支持这一点,以允许用户选择将张量的哪些部分独立地丢弃。然而,论文和文档都没有清楚地解释应该保留哪些维度的独立性,而且TensorFlow关于noise_shape
如何工作的解释也不够清晰。
我认为对于典型的CNN层输出,形状为只有在noise_shape[i] == shape(x)[i]的维度才会做出独立决策。
[batch_size, height, width, channels]
,我们不希望单独的行或列自己掉落,而是希望整个通道(相当于完全连接的NN中的一个节点)独立于例子(即不同的通道可能会在批处理中的不同示例中取消掉)。我的想法正确吗?如果是这样,那么如何使用
noise_shape
参数实现具有这种特定性的dropout?它应该是以下内容吗:noise_shape=[batch_size, 1, 1, channels]
或者:
noise_shape=[1, height, width, 1]