为什么我们必须退出Tensorflow?

时间:2020-04-05 03:09:49

标签: tensorflow machine-learning deep-learning dropout

我已阅读本文https://www.tensorflow.org/api_docs/python/tf/keras/layers/Dropout。失落将通过在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个中子

2 个答案:

答案 0 :(得分:1)

在每个使用辍学的训练阶段,都会随机选择和删除一些神经元。在测试阶段,将使用每个神经元。

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

第二个是使用80个神经元,并且每次都对它们进行训练。

答案 1 :(得分:1)

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

相关问题