【问题标题】:How dropout works in tensorflowdropout 在 tensorflow 中的工作原理
【发布时间】:2020-01-30 07:14:34
【问题描述】:

dropout 如何用于 3d 输入。 例如,对于tf.nn.dropout(x, 0.1) 如果 x 的大小是大小为 2 * 10 * 10 的 3 维

然后按通道方式应用 dropout 意味着在每个通道中它会随机忽略 10 个值 (因此在此示例中,第一个通道随机忽略 10,第二个通道随机忽略 10) 或者它 适用于整个输入意味着它会随机忽略整个 2 * 10 * 10 个特征中的 20 个值?

【问题讨论】:

    标签: python tensorflow machine-learning deep-learning


    【解决方案1】:

    Dropout 只不过是正则化,但我们只在一层中使用很少的特征或神经元,而不是整层的正则化。如有必要,可以对每一层应用 Dropout。在处理 dropout 时,我们主要需要担心一个参数,即速率。并且 dropout 也用于过度拟合或高方差。它是这样工作的:

    让我们考虑一个只有 5 个特征的单个神经元神经网络,这些特征被赋予单个神经元。现在在此示例中添加 dropout 是因为神经元不能依赖任何单个特征,因此,当 dropout 应用于此输入时,它会根据给定的速率进行少量输入,并随机选择少量特征并在该特定迭代中消除。因此,对于每次迭代,dropout 都会随机消除特征,这使得神经元不依赖任何一个特征。

    现在让我们考虑具有 5 层和 3 个特征隐藏单元的深度神经网络:[7, 7, 3, 2, 1] 其中最后一层是输出层。现在在这个例子中,我们可以为每一层添加 dropout,但它是如何变化的。当应用于具有 7 个单位的第一层时,我们使用 rate = 0.3,这意味着我们必须从 7 个单位中随机删除 30% 的单位。对于具有 7 个单元的下一层,我们添加 dropout rate = 0.5,因为这里之前的第 7 层单元和这层 7 单元使该层过度拟合数据,所以我们使 50% 的单元下降。对于第三层,我们应该降低速率,因为第三层的隐藏层是 7,第四层是 3,这意味着只有很少的连接。现在有了下一层,我们不需要应用 dropout,因为它只有很少的隐藏单元。
    现在我们可以为输入层应用 dropout,但并不经常这样做。如果可以做到,那么下降率将接近 0.1 甚至更低。

    这都是关于辍学的。我在 coursera 上完成了深度学习课程,因此从这些知识中分享了这些信息。

    【讨论】:

    • 谢谢,但我的问题是关于在 3d 输入中它如何像我在示例中提到的那样丢弃值。
    • 正如我在给出 3D 输入时提到的,让我们以 10x10x2 为例。现在特征的数量是 300。现在,当以某种速率应用 dropout 时,它所做的只是随机选择并丢弃它们。拥有 3D 输入确实很重要,因为我们所知道的只是特征。所以,dropout 会随机选择并丢弃它们。
    猜你喜欢
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2013-11-04
    • 2012-09-02
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多