我正在使用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)?
由于
答案 0 :(得分:1)
通常输入层的保持概率不同。首先,尝试保留所有输入keep_prob=1.0
,看看是否得到类似的结果,没有辍学。如果您尝试keep_prob=0.0
,则应该只获得噪音(无输入)。这是你可以调试这种系统的方法。当您确定限制有效时,请尝试keep_prob=0.8
之类的内容,这通常适用于mnist。