【问题标题】:python tensorflow using dropout on input layerpython tensorflow在输入层上使用dropout
【发布时间】:2017-11-21 10:12:45
【问题描述】:

我正在使用带有 tf 的 python,并在为 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)的内置方法?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢!你能推荐任何准确度 > 97% 的好的工作 mnist 自动编码器示例吗?
    猜你喜欢
    • 2020-03-13
    • 2019-06-16
    • 1970-01-01
    • 2017-10-20
    • 2019-08-09
    • 2020-12-10
    • 1970-01-01
    • 2020-09-04
    • 2022-01-10
    相关资源
    最近更新 更多