使用输出层上的dropout的python tensorflow

时间:2017-06-19 09:09:17

标签: python tensorflow deep-learning autoencoder unsupervised-learning

我正在使用python和tf,并在为mnist数据训练自动降噪编码器时寻找掩盖某些输入的正确方法。

我尝试使用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)?

由于

1 个答案:

答案 0 :(得分:1)

通常输入层的保持概率不同。首先,尝试保留所有输入keep_prob=1.0,看看是否得到类似的结果,没有辍学。如果您尝试keep_prob=0.0,则应该只获得噪音(无输入)。这是你可以调试这种系统的方法。当您确定限制有效时,请尝试keep_prob=0.8之类的内容,这通常适用于mnist。