我正在使用TensorFlow Keras来构建和安装深度神经网络(DNN)。
我已阅读的文献鼓励我使用Dropout层。但是,当我添加值为dropout
的{{1}}层时,我的渐变体面渐变效果很奇怪。具体来说,训练准确性和验证准确性似乎在某些硬性限制上达到极限。
这是什么作用?为什么会这样呢? 任何意见或反馈将不胜感激。
0.5
以下是一些代码:
_________________________________________________________________
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
答案 0 :(得分:1)
下降是一种很好的正则化技术。但是,辍学的价值有点像超参数,您必须对其进行调整。
辍学基本上是关闭指定百分比的神经元,以便网络可以看到哪些未关闭的神经元正在拾起信号(无论是否有用)。每次随机关闭一组不同的神经元。
因此,我认为您遇到的问题是关闭神经元的比例过高(50%)。将其调低至20%-30%。另一个错误是在最后一层以及第一层之前都使用了dropout。删除这两个辍学层,并调低辍学的百分比(辍学率),你应该没事:)