我正在尝试在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 Network和how to reduce overfitting in neural networks?
但是,没有任何改善。如何减少过度拟合?
谢谢