python tensorflow 在输入层使用 dropout

python tensorflow using dropout on input layer

我将 python 与 tf 一起使用,并在为 mnist 数据训练自动降噪编码器时寻找屏蔽某些输入的正确方法。

我尝试对输入层使用 dropout,就像我对隐藏层使用它一样,结果不是很好,很难知道自动编码器有什么问题,因为它很难调试所有深度学习架构

我用于 dropout 的代码,包括在输入层上:

def encoder_2(x):
    global dims #list of dimensions including the input
    layers = [x]
    dropouts = []
    for i,dim in list(enumerate(dims))[:-1]:
        dropouts.append(tf.nn.dropout(layers[-1], keep_prob=keep_prob))
        try:
            layers.append(tf.nn.relu(tf.add(tf.matmul(dropouts[-1], weights["encoder_h%d"%(i+1)]), biases["encoder_b%d"%(i+1)])))
        except:
            pass

    return layers[-1]

我发现 here 一些输入屏蔽的实现,但我很难相信 tf 中没有为此内置的函数。

屏蔽输入的正确方法是dropout吗?如果没有,是否有内置的方法在输入上使用掩码(dropout)?

谢谢

通常输入层的保留概率不同。首先,尝试保留所有输入 keep_prob=1.0 并查看是否获得与无丢失相似的结果。如果你尝试 keep_prob=0.0,你应该只会得到噪音(没有输入)。这就是调试此类系统的方法。当你确定限制有效时,尝试像 keep_prob=0.8 这样的东西,这通常对 mnist 有好处。