使用TensorFlow Keras训练DNN。为什么使用Dropout时精度会下降

时间:2019-01-07 14:18:32

标签: tensorflow keras regression dropout

我正在使用TensorFlow Keras来构建和安装深度神经网络(DNN)。 我已阅读的文献鼓励我使用Dropout层。但是,当我添加值为dropout的{​​{1}}层时,我的渐变体面渐变效果很奇怪。具体来说,训练准确性和验证准确性似乎在某些硬性限制上达到极限。

这是什么作用?为什么会这样呢? 任何意见或反馈将不胜感激。

0.5

matplotlib.pyplot Accuracy

以下是一些代码:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dropout_1 (Dropout)          (None, 136)               0         
_________________________________________________________________
dense_1 (Dense)              (None, 84)                11508     
_________________________________________________________________
dropout_2 (Dropout)          (None, 84)                0         
_________________________________________________________________
batch_normalization_1 (Batch (None, 84)                336       
_________________________________________________________________
dense_2 (Dense)              (None, 42)                3570      
_________________________________________________________________
batch_normalization_2 (Batch (None, 42)                168       
_________________________________________________________________
dropout_3 (Dropout)          (None, 42)                0         
_________________________________________________________________
dense_3 (Dense)              (None, 21)                903       
=================================================================
Total params: 16,485
Trainable params: 16,233
Non-trainable params: 252

1 个答案:

答案 0 :(得分:1)

下降是一种很好的正则化技术。但是,辍学的价值有点像超参数,您必须对其进行调整。

辍学基本上是关闭指定百分比的神经元,以便网络可以看到哪些未关闭的神经元正在拾起信号(无论是否有用)。每次随机关闭一组不同的神经元。

因此,我认为您遇到的问题是关闭神经元的比例过高(50%)。将其调低至20%-30%。另一个错误是在最后一层以及第一层之前都使用了dropout。删除这两个辍学层,并调低辍学的百分比(辍学率),你应该没事:)