如何减少经过简单处理的简单神经网络的过拟合问题

时间:2020-06-26 05:31:22

标签: python-3.x tensorflow keras neural-network

我正在尝试在databricks / GPU上运行一些示例深度学习python3代码。 代码来自https://www.tensorflow.org/tutorials/keras/text_classification_with_hub#evaluate_the_model

我得到了结果:

 training loss: 0.0762 - training accuracy: 0.9929 
 validation_loss: 0.5734 - validation_accuracy: 0.8628

上面的例子

"This fairly naive approach achieves an accuracy of about 87%. With more advanced approaches, the model should get closer to 95%."

我想找到提高准确性的方法。

从结果来看,我认为它过度拟合。因此,我尝试添加l1和l2正则化器和辍学。

  embedding = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
  hub_layer = hub.KerasLayer(embedding, input_shape=[], 
                       dtype=tf.string, trainable=True)
  
  tf.keras.regularizers.l1_l2(l1=0.04, l2=0.01)  # L1 + L2 penalties
  model = tf.keras.Sequential()
  model.add(hub_layer)
  model.add(tf.keras.layers.Dense(8, activation='relu'))
  model.add(tf.keras.layers.Dropout(rate=0.3))
  model.add(tf.keras.layers.Dense(1))

我尝试了不同的辍学率(0.2、0.3、0.5、0.7)和l1 / l2正则化器(0.01、0.02、0.04)。

我将第一个隐藏层中的单位从16个减少到8个。 我已经尝试过Reducing (Versus Delaying) Overfitting in Neural Networkhow to reduce overfitting in neural networks?

但是,没有任何改善。如何减少过度拟合?

谢谢

0 个答案:

没有答案