从你的训练日志来看,验证损失在几个epoch之后没有明显下降。这可能是由于模型过拟合或者学习率过高导致的。你可以尝试以下方法来解决这个问题:
降低学习率:将学习率从3e-5降低到1e-4或更低,以便模型能够更好地收敛。
增加批次大小:尝试将批次大小从1增加到更大的值,例如16或32,以便模型能够更好地捕捉数据中的模式。
使用早停法(Early stopping):在训练过程中,当验证损失连续几个epoch没有明显下降时,停止训练。这可以防止模型过拟合。
添加正则化项:为了减少模型的过拟合风险,可以在损失函数中添加L1或L2正则化项。
以下是一个修改后的配置示例:
config = { "max_epochs":30,
"val_check_interval":1.0,
"check_val_every_n_epoch":1,
"gradient_clip_val":1.0,
"num_training_samples_per_epoch": 12032,
"lr":1e-4, # 降低学习率
"train_batch_sizes": [16], # 增加批次大小
"val_batch_sizes": [16], # 增加批次大小
# "seed":2022,
"num_nodes": 1,
"warmup_steps": 36096,
"result_path": "./result",
"verbose": False,
}
尝试这些建议,看看是否能改善验证损失的收敛情况。祝你好运!
2条答案
按热度按时间wfveoks01#
train_batch_sizes可能太小,无法获得全局最优解。尝试增加更多的warmup_steps。
f8rj6qna2#
你好,Mann1904!请问你是如何获取每个时期损失信息的?我无法获取到这些信息。