java调用albert模型_微调预训练语言模型,解决多标签分类任务(可加载BERT、Roberta、Bert-wwm以及albert等知名开源tf格式的模型)...

该博客介绍了如何使用Java调用Albert模型进行多标签分类任务,支持BERT、Roberta、Bert-wwm等预训练模型。作者详细阐述了数据集、模型训练过程,包括训练参数、模型结构的调整,并展示了模型的评估效果。此外,还提供了在线预测的Python脚本和模型转换为TensorFlow Serving的步骤。
摘要由CSDN通过智能技术生成

Multi_Label_Classifier_finetune

微调预训练语言模型,解决多标签分类任务。可加载BERT、Roberta、Bert-wwm以及albert等开源tf格式的模型

该项目的目录为:

数据集描述

模型训练

预测

导出模型用于Tensorflow Serving

数据集描述

本文所使用的的多标签数据集来自于kaggle比赛(toxic-comment-classification)

具体示例如下:

data_show.jpg

标签描述:

labels_show.jpg

上面有2句示例,第一行分别对应(id,text,labels),其中labels通过类似于one-hot的方式进行了转换,这里就变成了'1,1,1,0,1,0',比对标签文件中标签的顺序,表示该文本对应的标签为'toxic,severe_toxic,obscene,insult'

模型训练

运行命令:

bash train.sh

训练命令的参数说明:

BERT_BASE_DIR:预训练语言模型所在路径

DATA_DIR:训练集所在路径

TRAINED_CLASSIFIER:训练的模型所在目录

MODEL_NAME:训练的模型名称 除此之外,还要根据自己的数据集和显存情况指定max_seq_length、train_batch_size和num_train_epochs。

训练后模型的评估效果如下所示: model_perform.jpg

注意:

在训练阶段: 我们必须修改在output layer后的模型架构。多类分类器将softmax层放置在输出层之后。

对于多标签,softmax更改为Sigmoid层,loss更改为sigmoid_cross_entropy_with_logits,可以在create_model()函数中找到它。

在评估阶段: 评估标准通过使用的tf.metrics.auc修改为每个类别的auc。具体的可以在metric_fn()中看到.

预测

运行命令:

python run_classifier_predict_online.py

注意:

在运行前需要在文件中指定模型路径,修改BERT_BASE_DIR参数,该参数的值为你训练好的模型所在路径(还需要将预训练语言模型中的bert_config.json和vocab.txt两个文件复制到你训练好的模型目录下面,因为模型预测时需要加载这两个文件)

运行效果如下所示:

predict_show.jpg

导出模型用于Tensorflow Serving

由于通过Tensorflow Seving部署模型需要用到pb格式的文件,故在这里也提供了模型转换的功能。

运行命令:

python model_exporter.py

注意:

在运行前需要修改一下data_path、labels_num和export_path这三个参数的值。其中data_path为你训练好的模型所在路径,labels_num为标签的数目,export_path为导出后的pd模型存储的位置。 导出后如下所示:

exported_show.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值