【NLP实战】基于Bert和双向LSTM的情感分类【中篇】( 六 )


注意这里=2,=10, =5是在测试训练,不是正式训练 。
关于绘图工具
这里把绘图工具也换成了,这是一款可以根据日志绘制准确率、loss等的工具 。在安装了-后,会自动安装 。用法简单 。
这里只贴启动代码:
tensorboard --logdir=path/to/log/directory
注意等号两边不要留空格 。
训练测试
上述代码只用了一小部分数据集进行测试,先来看看控制台输出:
打开的Web UI:
可以看到在按照我们期望的方式下降 。
第四部分:正式训练
该部分训练时间接近三小时,是本次实验的第一次训练 。现在给出超参数:
batch_size = 128epochs = 10# 刚才写的30dropout = 0.4rnn_hidden = 768rnn_layer = 1class_num = 3lr = 0.001
不建议读者跟着一起训练,因为之后有改进版 。只需要修改main,就可以正式训练.
if __name__ == '__main__':token = BertTokenizer.from_pretrained('bert-base-chinese')# Trainer可以帮助调试,比如快速运行、只使用一小部分数据进行测试、完整性检查等,# 详情请见官方文档https://lightning.ai/docs/pytorch/latest/debug/debugging_basic.html# auto自适应gpu数量trainer = Trainer(max_epochs=epochs, log_every_n_steps=10, accelerator='gpu', devices="auto",fast_dev_run=False)model = BiLSTMLighting(drop=dropout, hidden_dim=rnn_hidden, output_dim=class_num)trainer.fit(model)
too years later…
这篇文章没有讲到模型保存,代码里也没写,但是不用担心,会帮我们自动保存,下篇会详细介绍如何保存训练过程中最好的模型,以及模型如何读取与测试 。
第一次训练完毕 。现在来看看我们和:
可以看到train loss依然在下降,但是val loss却已经开始上升 。说明训练到后来,模型过拟合了,这也是为什么我们要接着调整超参数并进行第二次训练的原因 。但这些是下一篇文章的内容 。这里先剧透一下,这次训练的模型拿去做测试,评估结果如下:
第一次训练的测试结果
这个结果在竞赛排行榜上排在28名的位置(评估标准为) 。
关于如何测试,如何解决过拟合等,将在下一篇文章中说明 。