深度学习训练代码怎么改

我是一名大数据专业的本科生,初学深度学习。由于学习需要,便尝试进行一个对商品评论的情感态度从负面到正面分五档的训练,但是却出现了一些奇怪的问题。
我所使用的环境为Win11教育版,Python 3.9.13,Tensorflow 2.11,通过调用tf自带的Keras进行训练。
我的模型构建代码如下:

mod=keras.Sequential()
#下方maxlen为最长词数
mod.add(keras.layers.Embedding(10000, maxlen))
mod.add(keras.layers.GlobalAveragePooling1D())
mod.add(keras.layers.Dense(200,activation='relu'))
mod.add(keras.layers.Dropout(0.28))
mod.add(keras.layers.Dense(157,activation='relu'))
mod.add(keras.layers.Dropout(0.43))
mod.add(keras.layers.Dense(101,activation='relu'))
mod.add(keras.layers.Dense(43,activation='relu'))
mod.add(keras.layers.Dropout(0.17))
mod.add(keras.layers.Dense(5,activation='softmax'))
mod.compile(optimizer=keras.optimizers.Adam(learning_rate=0.00001,weight_decay=0.8),
              loss='categorical_crossentropy',
              metrics=['acc'])

我的训练代码如下:

mod.fit(dftrain,
        lftrain,
        epochs=100,
        batch_size=8,
        validation_data=(dfv, lfv),
        verbose=1,
        shuffle=True)

控制台输出如下:

Epoch 71/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1317 - acc: 0.5956 - val_loss: 1.1592 - val_acc: 0.5700
Epoch 72/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1368 - acc: 0.5956 - val_loss: 1.1593 - val_acc: 0.5700
Epoch 73/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1334 - acc: 0.5956 - val_loss: 1.1593 - val_acc: 0.5700
Epoch 74/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1386 - acc: 0.5956 - val_loss: 1.1593 - val_acc: 0.5700
Epoch 75/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1331 - acc: 0.5956 - val_loss: 1.1593 - val_acc: 0.5700
Epoch 76/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1303 - acc: 0.5956 - val_loss: 1.1593 - val_acc: 0.5700
Epoch 77/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1307 - acc: 0.5961 - val_loss: 1.1594 - val_acc: 0.5700
Epoch 78/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1369 - acc: 0.5956 - val_loss: 1.1594 - val_acc: 0.5700
Epoch 79/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1253 - acc: 0.5956 - val_loss: 1.1593 - val_acc: 0.5700
Epoch 80/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1309 - acc: 0.5956 - val_loss: 1.1593 - val_acc: 0.5700
Epoch 81/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1297 - acc: 0.5956 - val_loss: 1.1594 - val_acc: 0.5700
Epoch 82/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1230 - acc: 0.5956 - val_loss: 1.1595 - val_acc: 0.5700
Epoch 98/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1275 - acc: 0.5956 - val_loss: 1.1595 - val_acc: 0.5700
Epoch 99/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1162 - acc: 0.5956 - val_loss: 1.1595 - val_acc: 0.5700
Epoch 100/100
225/225 [==============================] - 7s 32ms/step - loss: 1.1293 - acc: 0.5956 - val_loss: 1.1595 - val_acc: 0.5700

很明显,四项指标均没有大的变化,请问有什么改进的方法吗?

看到您的训练结果,可以发现训练数据的正确率和验证数据的正确率都不高,并且训练的损失值也不在降低。这是一个过拟合的现象,可能是由于模型的复杂度过高导致的。您可以通过减少神经元的数量,增加数据的数量,减少模型层数等方法来解决过拟合的问题。同时,您也可以通过调整学习率,优化器等参数来提高模型的性能。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^