【问题标题】:Why we must drop out in Tensorflow?为什么我们必须退出 TensorFlow?
【发布时间】:2020-07-17 03:17:32
【问题描述】:

我已阅读这篇文章,https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dropout。 Dropout 将通过在 ANN 中生成非活动中子来帮助防止过度拟合。但是下一个问题……

为什么我们必须丢弃中子,因为我们可以调整 ANN 中的中子数量?比如这段代码有什么不同?

第一

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(100, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

第二

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(80, activation='relu'),
  tf.keras.layers.Dense(10)
])

我们使用 80 个中子而不是 100 个,这样会丢失 20 个中子

【问题讨论】:

    标签: tensorflow machine-learning deep-learning dropout


    【解决方案1】:

    在使用 dropout 的每个训练阶段,随机选择和移除一些神经元。在测试阶段,每个神经元都被使用。

    因此,第一个是使用 100 个神经元,但它们是这样训练的。 【第一次】训练H1、H2、H3、...、H80 【第二次】训练H61、H62、...、H100 ....

    第二种是用80个神经元,每次都训练进去。

    【讨论】:

      【解决方案2】:

      Dropout 在训练中概率性地移除少量神经元以减少过度拟合。在第一个代码中,在训练期间 20% 的神经元将被丢弃,这意味着与这些神经元相关的权重在训练期间不会更新。在测试期间,所有神经元都将在那里,网络将看到所有 100 个神经元。对于第二种情况,在训练和测试期间,网络将在训练和测试人脸中看到 80 个神经元。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-17
        • 2021-12-12
        • 2013-11-09
        • 2014-08-28
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        相关资源
        最近更新 更多