为什么我们必须退出 TensorFlow?

Why we must drop out in Tensorflow?

我已阅读这篇文章,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 个中子

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

因此,第一个是使用 100 个神经元,但它们是这样训练的。 [第一次] H1, H2, H3, ..., H80 都训练好了 [第二次] H61, H62, ..., H100 trainedm ....

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

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