应用实践Paddle分类模型的集成者PaddleHubFin
1。基于PaddleHub下的分类模型构建
PaddleHubAPI接口文档说明:遇到不知道参数设置具体情况清查接口说明!!!
https:paddlehub。readthedocs。iozhCNreleasev2。1apiindex。html
使用PaddleHubFinetuneAPI进行Finetune可以分为4个步骤。选择模型加载数据集选择优化策略和运行配置执行finetune并评估模型1。1二分类模型demo
选择模型
paddlehub支持模型列表
PaddleHub还提供BERT等模型可供选择,当前支持文本分类任务的模型对应的加载示例如下:
通过以上的一行代码,model初始化为一个适用于文本分类任务的模型,为ERNIE的预训练模型后拼接上一个全连接网络(FullConnected)。modelhub。Module(nameernie,taskseqcls,numclasses2)
hub。Module的参数用法如下:name:模型名称,可以选择ernie,ernietiny,bertbasecased,bertbasechinese,robertawwmext,robertawwmextlarge等。task:finetune任务。此处为seqcls,表示文本分类任务。numclasses:表示当前文本分类任务的类别数,根据具体使用的数据集确定,默认为2。
加载数据集:
加载官方提供数据集:选用中文情感分类公开数据集ChnSentiCorp为示例(二分类经典数据集)traindatasethub。datasets。ChnSentiCorp(tokenizermodel。gettokenizer(),maxseqlen128,modetrain)devdatasethub。datasets。ChnSentiCorp(tokenizermodel。gettokenizer(),maxseqlen128,modedev)testdatasethub。datasets。ChnSentiCorp(tokenizermodel。gettokenizer(),maxseqlen128,modetest)查看数据集foriinrange(10):print(testdataset。examples〔i〕)
参数问题请查看文档:https:paddlehub。readthedocs。iozhCNreleasev2。1apidatasetsindex。html
ChnSentiCorp的参数用法如下:tokenizer:表示该module所需用到的tokenizer,其将对输入文本完成切词,并转化成module运行所需模型输入格式。mode:选择数据模式,可选项有train,dev,test,默认为train。maxseqlen:ERNIEBERT模型使用的最大序列长度,若出现显存不足,请适当调低这一参数。
tokenizer的作用是将原始输入文本转化成模型model可以接受的输入数据形式。PaddleHub2。0中的各种预训练模型已经内置了相应的tokenizer,可以通过model。gettokenizer方法获取。optimizerpaddle。optimizer。Adam(learningrate5e5,parametersmodel。parameters())优化器的选择和参数配置trainerhub。Trainer(model,optimizer,checkpointdir。chekpoint,usegpuTrue,usevdlTrue)finetune任务的执行者
优化策略
Paddle2。0rc提供了多种优化器选择,如SGD,Adam,Adamax等,详细参见https:www。paddlepaddle。org。cndocumentationdocszhapipaddleoptimizerOverviewcn。htmlaboutlr
在本教程中选择了Adam优化器,其的参数用法:learningrate:全局学习率。默认为1e3;parameters:待优化模型参数。运行配置
Trainer主要控制Finetune任务的训练,是任务的发起者,包含以下可控制的参数:model:被优化模型;optimizer:优化器选择;usegpu:是否使用gpu训练;usevdl:是否使用vdl可视化训练过程;checkpointdir:保存模型参数的地址;comparemetrics:保存最优模型的衡量指标;
执行finetune并评估模型trainer。train(traindataset,epochs3,batchsize32,evaldatasetdevdataset,loginterval10,saveinterval1)配置训练参数,启动训练,并指定验证集
trainer。train主要控制具体的训练过程,包含以下可控制的参数:deftrain(traindataset:paddle。io。Dataset,epochs:int1,batchsize:int1,numworkers:int0,evaldataset:paddle。io。DatasetNone,loginterval:int10,saveinterval:int10,collatefn:CallableNone):traindataset:训练时所用的数据集;epochs:训练轮数;batchsize:训练的批大小,如果使用GPU,请根据实际情况调整batchsize;numworkers:works的数量,默认为0;evaldataset:验证集;loginterval:打印日志的间隔,单位为执行批训练的次数,推荐设置为50,100默认值为10。saveinterval:保存模型的间隔频次,单位为执行训练的轮数。resulttrainer。evaluate(testdataset,batchsize32)在测试集上评估当前训练模型defevaluate(evaldataset:paddle。io。Dataset,batchsize:int1,numworkers:int0,collatefn:CallableNone):
使用模型进行预测
当Finetune完成后,我们加载训练后保存的最佳模型来进行预测,完整预测代码如下:importnumpyasnpDatatobeprdicteddata〔〔这个宾馆比较陈旧了,特价的房间也很一般。总体来说一般〕,〔交通方便;环境很好;服务态度很好房间较小〕,〔还稍微重了点,可能是硬盘大的原故,还要再轻半斤就好了。其他要进一步验证。贴的几种膜气泡较多,用不了多久就要更换了,屏幕膜稍好点,但比没有要强多了。建议配赠几张膜让用用户自己贴。〕,〔前台接待太差,酒店有AB楼之分,本人checkin后,前台未告诉B楼在何处,并且B楼无明显指示;房间太小,根本不像4星级设施,下次不会再选择入住此店啦〕,〔19天硬盘就罢工了算上运来的一周都没用上15天可就是不能换了唉你说这算什么事呀〕〕labelmap{0:negative,1:positive}加载模型modelhub。Module(nameernie,taskseqcls,loadcheckpoint。ckptbestmodelmodel。pdparams,labelmaplabelmap)resultsmodel。predict(data,maxseqlen128,batchsize1,usegpuTrue)foridx,textinenumerate(data):print(Data:{}Lable:{}。format(text〔0〕,results〔idx〕))Data:这个宾馆比较陈旧了,特价的房间也很一般。总体来说一般Lable:negativeData:交通方便;环境很好;服务态度很好房间较小Lable:positiveData:还稍微重了点,可能是硬盘大的原故,还要再轻半斤就好了。其他要进一步验证。贴的几种膜气泡较多,用不了多久就要更换了,屏幕膜稍好点,但比没有要强多了。建议配赠几张膜让用用户自己贴。Lable:negativeData:前台接待太差,酒店有AB楼之分,本人checkin后,前台未告诉B楼在何处,并且B楼无明显指示;房间太小,根本不像4星级设施,下次不会再选择入住此店啦Lable:negativeData:19天硬盘就罢工了算上运来的一周都没用上15天可就是不能换了唉你说这算什么事呀Lable:negative
至此二分类任务完成,需要完成程序,见文件paddlehubtrain和predic文件,进行脚本运行!1。2多分类任务demo1。2。1自定义数据集
本示例数据集是由清华大学提供的新闻文本数据集THUCNews。THUCNews是根据新浪新闻RSS订阅频道20052011年间的历史数据筛选过滤生成,包含74万篇新闻文档(2。19GB),均为UTF8纯文本格式。我们在原始新浪新闻分类体系的基础上,重新整合划分出14个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。为了快速展示如何使用PaddleHub完成文本分类任务,该示例数据集从THUCNews训练集中随机抽取了9000条文本数据集作为本示例的训练集,从验证集中14个类别每个类别随机抽取100条数据作为本示例的验证集,测试集抽取方式和验证集相同
如果希望使用自定义的数据集,则需要对自定义数据进行相应的预处理,将数据集文件处理成预训练模型可以读取的格式。例如用PaddleHub文本分类任务使用自定义数据时,需要切分数据集,将数据集切分为训练集、验证集和测试集。
a。设置数据集目录。用户需要将数据集目录设定为如下格式。data:数据目录train。txt:训练集数据dev。txt:验证集数据test。txt:测试集数据
b。设置文件格式和内容。训练集、验证集和测试集文件的编码格式建议为utf8格式。内容的第一列是文本内容,第二列为文本类别标签。列与列之间以Tab键分隔。建议在数据集文件第一行填写列说明label和texta,中间以Tab键分隔,示例如下:labeltexta房产昌平京基鹭府10月29日推别墅1200万套起享97折教育贵州2011高考录取分数线发布理科一本448分社会众多白领因集体户口面临结婚难题查看数据集cdhomeaistudio数据集!tarzxvfthunews。tar。gz!lshlthunews!headn3thunewstrain。txt
c。加载自定义数据集。加载文本分类的自定义数据集,用户仅需要继承基类TextClassificationDataset,修改数据集存放地址以及类别即可,具体可以参考如下代码:方法一:importpaddlehubashubimportpaddlemodelhub。Module(nameernietiny,taskseqcls,numclasses14)在多分类任务中,numclasses需要显式地指定类别数,此处根据数据集设置为14importos,io,csvfrompaddlehub。datasets。basenlpdatasetimportInputExample,TextClassificationDataset数据集存放位置DATADIRhomeaistudio数据集thunewsclassThuNews(TextClassificationDataset):definit(self,tokenizer,modetrain,maxseqlen128):ifmodetrain:datafiletrain。txtelifmodetest:datafiletest。txtelse:datafilevalid。txtsuper(ThuNews,self)。init(basepathDATADIR,datafiledatafile,tokenizertokenizer,maxseqlenmaxseqlen,modemode,isfilewithheaderTrue,labellist〔体育,科技,社会,娱乐,股票,房产,教育,时政,财经,星座,游戏,家居,彩票,时尚〕)解析文本文件里的样本defreadfile(self,inputfile,isfilewithheader:boolFalse):ifnotos。path。exists(inputfile):raiseRuntimeError(Thefile{}isnotfound。。format(inputfile))else:withio。open(inputfile,r,encodingUTF8)asf:readercsv。reader(f,delimiter,quotecharNone)examples〔〕seqid0headernext(reader)ifisfilewithheaderelseNoneforlineinreader:exampleInputExample(guidseqid,textaline〔0〕,labelline〔1〕)seqid1examples。append(example)returnexamplestraindatasetThuNews(model。gettokenizer(),modetrain,maxseqlen128)devdatasetThuNews(model。gettokenizer(),modedev,maxseqlen128)testdatasetThuNews(model。gettokenizer(),modetest,maxseqlen128)foreintraindataset。examples〔:3〕:print(e)方法二:对上述步骤精简了一下,但是出现了一些警告,不过对结果不影响,介意的话推荐用第一个frompaddlehub。datasets。basenlpdatasetimportTextClassificationDatasetclassSeqClsDataset(TextClassificationDataset):数据集存放目录basepathhomeaistudio数据集thunews数据集的标签列表labellist〔体育,科技,社会,娱乐,股票,房产,教育,时政,财经,星座,游戏,家居,彩票,时尚〕definit(self,tokenizer,maxseqlen:int128,mode:strtrain):ifmodetrain:datafiletrain。txtelifmodetest:datafiletest。txtelse:datafiledev。txtsuper()。init(basepathself。basepath,tokenizertokenizer,maxseqlenmaxseqlen,modemode,datafiledatafile,labellistself。labellist,isfilewithheaderTrue)选择所需要的模型,获取对应的tokenizerimportpaddlehubashubmodelmodelhub。Module(nameernietiny,taskseqcls,numclasseslen(SeqClsDataset。labellist))tokenizermodel。gettokenizer()实例化训练集traindatasetSeqClsDataset(tokenizer)
至此用户可以通过SeqClsDataset实例化获取对应的数据集,可以通过hub。Trainer对预训练模型model完成文本分类任务
更多关于图像分类、序列标注等数据自定义参考开发文档:https:github。comPaddlePaddlePaddleHubblobreleasev2。0。0rcdocsdocschtutorialhowtoloaddata。mdE59B9BE69687E69CACE58886E7B1BBE695B0E68DAEE99B861。2。2训练预测结果optimizerpaddle。optimizer。Adam(learningrate5e5,parametersmodel。parameters())优化器的选择和参数配置trainerhub。Trainer(model,optimizer,checkpointdir。ckpt,usegpuTrue,usevdlTrue)finetune任务的执行者,开启可视化trainer。train(traindataset,epochs3,batchsize32,evaldatasetdevdataset,saveinterval1)配置训练参数,启动训练,并指定验证集resulttrainer。evaluate(testdataset,batchsize32)在测试集上评估当前训练模型
训练结果部分展示:〔2022072111:23:04,936〕〔TRAIN〕Epoch33,Step160282loss0。0756acc0。9844lr0。000050stepsec4。78ETA00:03:26〔2022072111:23:07,040〕〔TRAIN〕Epoch33,Step170282loss0。0971acc0。9781lr0。000050stepsec4。75ETA00:03:26〔2022072111:23:09,128〕〔TRAIN〕Epoch33,Step180282loss0。1516acc0。9594lr0。000050stepsec4。79ETA00:03:25〔2022072111:23:11,210〕〔TRAIN〕Epoch33,Step190282loss0。0854acc0。9781lr0。000050stepsec4。80ETA00:03:25〔2022072111:23:13,301〕〔TRAIN〕Epoch33,Step200282loss0。0953acc0。9781lr0。000050stepsec4。78ETA00:03:24〔2022072111:23:15,398〕〔TRAIN〕Epoch33,Step210282loss0。0761acc0。9750lr0。000050stepsec4。77ETA00:03:24〔2022072111:23:17,497〕〔TRAIN〕Epoch33,Step220282loss0。1358acc0。9563lr0。000050stepsec4。76ETA00:03:24〔2022072111:23:19,589〕〔TRAIN〕Epoch33,Step230282loss0。1075acc0。9750lr0。000050stepsec4。78ETA00:03:23〔2022072111:23:21,675〕〔TRAIN〕Epoch33,Step240282loss0。0858acc0。9719lr0。000050stepsec4。79ETA00:03:23〔2022072111:23:23,764〕〔TRAIN〕Epoch33,Step250282loss0。0670acc0。9875lr0。000050stepsec4。79ETA00:03:23〔2022072111:23:25,849〕〔TRAIN〕Epoch33,Step260282loss0。0780acc0。9781lr0。000050stepsec4。80ETA00:03:22〔2022072111:23:27,937〕〔TRAIN〕Epoch33,Step270282loss0。1262acc0。9594lr0。000050stepsec4。79ETA00:03:22〔2022072111:23:30,025〕〔TRAIN〕Epoch33,Step280282loss0。1550acc0。9625lr0。000050stepsec4。79ETA00:03:22〔Evaluationresult〕avgacc0。9136
Datatobeprdicteddata〔房产〔昌平京基鹭府10月29日推别墅1200万套起享97折新浪房产讯(编辑郭彪)京基鹭府(论坛相册户型样板间点评地图搜索)售楼处位于昌平区京承高速北七家出口向西南公里路南。项目预计10月29日开盘,总价1200万元套起,2012年年底入住。待售户型为联排户型面积为410522平方米,独栋户型面积为938平方米,双拼户型面积为522平方米。京基鹭府项目位于昌平定泗路与东北路交界处。项目周边配套齐全,幼儿园:伊顿双语幼儿园、温莎双语幼儿园;中学:北师大亚太实验学校、潞河中学(北京市重点);大学:王府语言学校、北京邮电大学、现代音乐学院;医院:王府中西医结合医院(三级甲等)、潞河医院、解放军263医院、安贞医院昌平分院;购物:龙德广场、中联万家商厦、世纪华联超市、瑰宝购物中心、家乐福超市;酒店:拉斐特城堡、鲍鱼岛;休闲娱乐设施:九华山庄、温都温泉度假村、小汤山疗养院、龙脉温泉度假村、小汤山文化广场、皇港高尔夫、高地高尔夫、北鸿高尔夫球场;银行:工商银行、建设银行、中国银行、北京农村商业银行;邮局:中国邮政储蓄;其它:北七家建材城、百安居建材超市、北七家镇武装部、北京宏翔鸿企业孵化基地等,享受便捷生活。〕,游戏〔尽管官方到今天也没有公布《使命召唤:现代战争2》的游戏详情,但《使命召唤:现代战争2》首部包含游戏画面的影片终于现身。虽然影片仅有短短不到20秒,但影片最后承诺大家将于美国时间5月24日NBA职业篮球东区决赛时将会揭露更多的游戏内容。这部只有18秒的广告片闪现了9个镜头,能够辨识的场景有直升机飞向海岛军事工事,有飞机场争夺战,有潜艇和水下工兵,有冰上乘具,以及其他的一些镜头。整体来看《现代战争2》很大可能仍旧与俄罗斯有关。片尾有一则预告:May24th,EasternConferenceFinals,这是什么?这是说当前美国NBA联赛东部总决赛的日期。原来这部视频是NBA季后赛奥兰多魔术对波士顿凯尔特人队时,TNT电视台播放的广告。〕,体育〔罗马锋王竟公然挑战两大旗帜拉涅利的球队到底错在哪记者张恺报道主场一球小胜副班长巴里无可吹捧,罗马占优也纯属正常,倒是托蒂罚失点球和前两号门将先后受伤(多尼以三号身份出场)更让人揪心。阵容规模扩大,反而表现不如上赛季,缺乏一流强队的色彩,这是所有球迷对罗马的印象。拉涅利说:去年我们带着嫉妒之心看国米,今年我们也有了和国米同等的超级阵容,许多教练都想有罗马的球员。阵容广了,寻找队内平衡就难了,某些时段球员的互相排斥和跟从前相比的落差都正常。有好的一面,也有不好的一面,所幸,我们一直在说一支伟大的罗马,必胜的信念和够级别的阵容,我们有了。拉涅利的总结由近一阶段困扰罗马的队内摩擦、个别球员闹意见要走人而发,本赛季技术层面强化的罗马一直没有上赛季反扑的面貌,内部变化值得球迷关注。〕,教育〔新总督致力提高加拿大公立教育质量滑铁卢大学校长约翰斯顿先生于10月1日担任加拿大总督职务。约翰斯顿先生还曾任麦吉尔大学长,并曾在多伦多大学、女王大学和西安大略大学担任教学职位。约翰斯顿先生在就职演说中表示,要将加拿大建设成为一个聪明与关爱的国度。为实现这一目标,他提出三个支柱:支持并关爱家庭、儿童;鼓励学习与创造;提倡慈善和志愿者精神。他尤其强调要关爱并尊重教师,并通过公立教育使每个人的才智得到充分发展。〕〕labellist〔体育,科技,社会,娱乐,股票,房产,教育,时政,财经,星座,游戏,家居,彩票,时尚〕labelmap{idx:labeltextforidx,labeltextinenumerate(labellist)}modelhub。Module(nameernie,taskseqcls,loadcheckpoint。ckptbestmodelmodel。pdparams,labelmaplabelmap)resultsmodel。predict(data,maxseqlen128,batchsize1,usegpuTrue)foridx,textinenumerate(data):print(Data:{}Lable:{}。format(text〔0〕,results〔idx〕))Data:昌平京基鹭府10月29日推别墅1200万套起享97折新浪房产讯(编辑郭彪)京基鹭府(论坛相册户型样板间点评地图搜索)售楼处位于昌平区京承高速北七家出口向西南公里路南。项目预计10月29日开盘,总价1200万元套起,2012年年底入住。待售户型为联排户型面积为410522平方米,独栋户型面积为938平方米,双拼户型面积为522平方米。京基鹭府项目位于昌平定泗路与东北路交界处。项目周边配套齐全,幼儿园:伊顿双语幼儿园、温莎双语幼儿园;中学:北师大亚太实验学校、潞河中学(北京市重点);大学:王府语言学校、北京邮电大学、现代音乐学院;医院:王府中西医结合医院(三级甲等)、潞河医院、解放军263医院、安贞医院昌平分院;购物:龙德广场、中联万家商厦、世纪华联超市、瑰宝购物中心、家乐福超市;酒店:拉斐特城堡、鲍鱼岛;休闲娱乐设施:九华山庄、温都温泉度假村、小汤山疗养院、龙脉温泉度假村、小汤山文化广场、皇港高尔夫、高地高尔夫、北鸿高尔夫球场;银行:工商银行、建设银行、中国银行、北京农村商业银行;邮局:中国邮政储蓄;其它:北七家建材城、百安居建材超市、北七家镇武装部、北京宏翔鸿企业孵化基地等,享受便捷生活。Lable:房产Data:尽管官方到今天也没有公布《使命召唤:现代战争2》的游戏详情,但《使命召唤:现代战争2》首部包含游戏画面的影片终于现身。虽然影片仅有短短不到20秒,但影片最后承诺大家将于美国时间5月24日NBA职业篮球东区决赛时将会揭露更多的游戏内容。这部只有18秒的广告片闪现了9个镜头,能够辨识的场景有直升机飞向海岛军事工事,有飞机场争夺战,有潜艇和水下工兵,有冰上乘具,以及其他的一些镜头。整体来看《现代战争2》很大可能仍旧与俄罗斯有关。片尾有一则预告:May24th,EasternConferenceFinals,这是什么?这是说当前美国NBA联赛东部总决赛的日期。原来这部视频是NBA季后赛奥兰多魔术对波士顿凯尔特人队时,TNT电视台播放的广告。Lable:游戏Data:罗马锋王竟公然挑战两大旗帜拉涅利的球队到底错在哪记者张恺报道主场一球小胜副班长巴里无可吹捧,罗马占优也纯属正常,倒是托蒂罚失点球和前两号门将先后受伤(多尼以三号身份出场)更让人揪心。阵容规模扩大,反而表现不如上赛季,缺乏一流强队的色彩,这是所有球迷对罗马的印象。拉涅利说:去年我们带着嫉妒之心看国米,今年我们也有了和国米同等的超级阵容,许多教练都想有罗马的球员。阵容广了,寻找队内平衡就难了,某些时段球员的互相排斥和跟从前相比的落差都正常。有好的一面,也有不好的一面,所幸,我们一直在说一支伟大的罗马,必胜的信念和够级别的阵容,我们有了。拉涅利的总结由近一阶段困扰罗马的队内摩擦、个别球员闹意见要走人而发,本赛季技术层面强化的罗马一直没有上赛季反扑的面貌,内部变化值得球迷关注。Lable:体育Data:新总督致力提高加拿大公立教育质量滑铁卢大学校长约翰斯顿先生于10月1日担任加拿大总督职务。约翰斯顿先生还曾任麦吉尔大学长,并曾在多伦多大学、女王大学和西安大略大学担任教学职位。约翰斯顿先生在就职演说中表示,要将加拿大建设成为一个聪明与关爱的国度。为实现这一目标,他提出三个支柱:支持并关爱家庭、儿童;鼓励学习与创造;提倡慈善和志愿者精神。他尤其强调要关爱并尊重教师,并通过公立教育使每个人的才智得到充分发展。Lable:教育1。3paddlehub小结PaddleHub旨在为开发者提供丰富的、高质量的、直接可用的预训练模型。【无需深度学习背景、无需数据与训练过程】,可快速使用AI模型,享受人工智能时代红利。涵盖CV、NLP、Audio、Video主流四大品类,支持一键预测、一键服务化部署和快速迁移学习全部模型开源下载,离线可运行。
特性:
【丰富的预训练模型】:涵盖CV、NLP、Audio、Video主流四大品类的180预训练模型,全部开源下载,离线可运行。
【一键模型快速预测】:通过一行命令行或者极简的PythonAPI实现模型调用,可快速体验模型效果。
【一键模型转服务化】:一行命令,搭建深度学习模型API服务化部署能力。
【十行代码迁移学习】:十行代码完成图片分类、文本分类的迁移学习任务
【跨平台兼容性】:可运行于Linux、Windows、MacOS等多种操作系统
支持任务【文本识别、人脸检测、图像编辑、目标检测、关键点检测、图像分割、图像分类、词法分析、文本生成、句法分析、情感分析、文本审核、语音合成、视频分类等】
优点十分明显易上手,比如数据集构建十分简单,当然缺点也就显露出来,就是在云端运行的时候不方便对参数设置,个性化设置偏少,以及如果开发者追求高精度模型,难以微调。2。基于预训练模型Finetune完成文本分类任务2。1预训练模型介绍
近年来随着深度学习的发展,模型参数的数量飞速增长。为了训练这些参数,需要更大的数据集来避免过拟合。然而,对于大部分NLP任务来说,构建大规模的标注数据集非常困难(成本过高),特别是对于句法和语义相关的任务。相比之下,大规模的未标注语料库的构建则相对容易。为了利用这些数据,我们可以先从其中学习到一个好的表示,再将这些表示应用到其他任务中。最近的研究表明,基于大规模未标注语料库的预训练模型(PretrainedModels,PTM)在NLP任务上取得了很好的表现。
本项目针对中文文本分类问题,开源了一系列模型,供用户可配置地使用:BERT(BidirectionalEncoderRepresentationsfromTransformers)中文模型,简写bertbasechinese,其由12层Transformer网络组成。ERNIEERNIE3。0Titan:ExploringLargerscaleKnowledgeEnhancedPretrainingforLanguageUnderstandingandGeneration,支持ERNIE3。0Medium中文模型(简写ernie3。0mediumzh)和ERNIE3。0Basezh等ERNIE3。0轻量级中文模型。RoBERTa(ARobustlyOptimizedBERTPretrainingApproach),支持24层Transformer网络的robertawwmextlarge和12层Transformer网络的robertawwmext。
当然还有最新的ernie3。0mediumzh这些模型:
ERNIE3。0Base(12layer,768hidden,12heads)
ERNIE3。0Medium(6layer,768hidden,12heads)
ERNIE3。0Mini(6layer,384hidden,12heads)
ERNIE3。0Micro(4layer,384hidden,12heads)
ERNIE3。0Nano(4layer,312hidden,12heads)
Finetune文件下文件:exportmodel。py动态图参数导出静态图参数脚本predict。py预测脚本README。md使用说明train。py训练评估脚本
部分结果展示:globalstep850,epoch:3,batch:250,loss:0。19126,accuracy:0。97937,speed:9。67stepsglobalstep860,epoch:3,batch:260,loss:0。25743,accuracy:0。97917,speed:9。55stepsglobalstep870,epoch:3,batch:270,loss:0。02109,accuracy:0。98125,speed:9。56stepsglobalstep880,epoch:3,batch:280,loss:0。15182,accuracy:0。98203,speed:9。53stepsglobalstep890,epoch:3,batch:290,loss:0。05055,accuracy:0。98125,speed:9。56stepsglobalstep900,epoch:3,batch:300,loss:0。01884,accuracy:0。98188,speed:9。63stepsevalloss:0。19699,accuracy:0。94333bestaccperformencehasbeenupdated:{bestacc:0。98125}{acc:0。98188}〔2022072114:58:37,435〕〔INFO〕tokenizerconfigfilesavedin。checkpointsmodelbesttokenizerconfig。json〔2022072114:58:37,435〕〔INFO〕Specialtokensfilesavedin。checkpointsmodelbestspecialtokensmap。json
预训练模型选择,修改程序中:使用ernie预训练模型ernie3。0mediumzhmodelAutoModelForSequenceClassification。frompretrained(ernie3。0mediumzh,numclasses2))tokenizerAutoTokenizer。frompretrained(ernie3。0mediumzh)使用bert预训练模型bertbasechinesemodelAutoModelForSequenceClassification。frompretrained(bertbasechinese,numclass2)tokenizerAutoTokenizer。frompretrained(bertbasechinese)
Transformer预训练模型汇总
程序中主要修改地方:加载数据集:PaddleNLP内置了多种数据集,用户可以一键导入所需的数据集。加载预训练模型:PaddleNLP的预训练模型可以很容易地通过frompretrained()方法加载。Auto模块(包括AutoModel,AutoTokenizer,及各种下游任务类)提供了方便易用的接口,无需指定类别,即可调用不同网络结构的预训练模型。第一个参数是汇总表中对应的PretrainedWeight,可加载对应的预训练权重。AutoModelForSequenceClassification初始化init所需的其他参数,如numclasses等,也是通过frompretrained()传入。Tokenizer使用同样的frompretrained方法加载。通过Dataset的map函数,使用tokenizer将dataset从原始文本处理成模型的输入。定义BatchSampler和DataLoader,shuffle数据、组合Batch。定义训练所需的优化器,loss函数等,就可以开始进行模型finetune任务。
程序运行时将会自动进行训练,评估,测试。同时训练过程中会自动保存模型在指定的savedir中。如:checkpointsmodel100modelconfig。jsonmodelstate。pdparamstokenizerconfig。jsonvocab。txt。。。
NOTE:如需恢复模型训练,则可以设置initfromckpt,如initfromckptcheckpointsmodel100modelstate。pdparams。如需使用ernietiny模型,则需要提前先安装sentencepiece依赖如pipinstallsentencepiece使用动态图训练结束之后,还可以将动态图参数导出成静态图参数,具体代码见exportmodel。py。静态图参数保存在outputpath指定路径中。运行方式:pythonexportmodel。pyparamspath。checkpointmodel900modelstate。pdparamsoutputpath。export
其中paramspath是指动态图训练保存的参数路径,outputpath是指静态图参数导出路径。
导出模型之后,可以用于部署,这里我就不做过多介绍了,需要部署的小伙伴去参考官方文档去操作吧。
将待预测数据如以下示例:这个宾馆比较陈旧了,特价的房间也很一般。总体来说一般怀着十分激动的心情放映,可是看着看着发现,在放映完毕后,出现一集米老鼠的动画片作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间。
可以直接调用predict函数即可输出预测结果Data:这个宾馆比较陈旧了,特价的房间也很一般。总体来说一般Label:negativeData:怀着十分激动的心情放映,可是看着看着发现,在放映完毕后,出现一集米老鼠的动画片Label:negativeData:作为老的四星酒店,房间依然很整洁,相当不错。机场接机服务很好,可以在车上办理入住手续,节省时间。Label:positive3。PromptUIE分类问题
UIE这块涉及很多事项和知识,我就放在另外一个项目展示,详情参考下面链接:
Paddlenlp之UIE分类模型【以情感倾向分析新闻分类为例】含智能标注方案)
效果如下图:
比较推荐!4。总结
paddlehub:PaddleHub旨在为开发者提供丰富的、高质量的、直接可用的预训练模型。【无需深度学习背景、无需数据与训练过程】,可快速使用AI模型,享受人工智能时代红利。涵盖CV、NLP、Audio、Video主流四大品类,支持一键预测、一键服务化部署和快速迁移学习全部模型开源下载,离线可运行。
优点十分明显易上手,比如数据集构建十分简单,当然缺点也就显露出来,就是在云端运行的时候不方便对参数设置,个性化设置偏少,以及如果开发者追求高精度模型,难以微调。
finetune
可以看出在使用paddlenlp下的finetune方法是可控性更多,虽然hub简单,但是个人更倾向使用paddlenlp框架下的预训练模型使用方法
PromptUIE
为了提高开发过程中的开发效率,减少不必要的重复工作时间,开放域信息抽取可以实现零样本(zeroshot)或者少样本(fewshot)抽取,大幅度降低标注数据依赖,在降低成本的同时,还提升了效果,更进一步!
这里温馨提示遇到问题多看文档手册
后续将对:文本多分类、多标签分类、层次分类进行讲解、以及这块数据集的定义方式
本人博客:https:blog。csdn。netsinat39620217?typeblog
辽宁舰女少校提到的00后新兵,有她!曾是考入北大的高考状元3月5日上午,十四届全国人大一次会议首场代表通道在人民大会堂举行。我是海军辽宁舰的一名政治教导员,在舰上工作8年了,先后在作战机电航空等多个部门任职。身着军装,一头利落的短发,作为
北京孩子面对人工智能自主翻译从小学英语投入二十万到底值不值头条创作挑战赛北京孩子面对人工智能自主翻译从小学英语投入二十万到底值不值。英语有没有用,不必多言。大家可以通过我的惨痛教训中吸取经验。我觉得我是比较有资格说英语重要性的,我上了一个
消保体检结果出炉!安心财险等3家公司被评为四级,或影响新业务开展2021年度保险公司消保工作的体检结果相继出炉。3月7日,北京商报记者统计发现,截至目前,93家保险公司相继公布消费者权益保护监管评价(以下简称消保监管评价)结果。具体而言,202
买重疾险后确诊癌症,保险公司拒赔,法院判了浙江温州一投保人购买重疾险后确诊恶性肿瘤,保险公司以保险人带病投保为由拒赔,而投保人在投保前曾告知保险业务员其在治疗相关疾病的经过,业务员也未因此拒绝投保。记者3月6日从温州平阳县
浮生六记浮生若梦,念念不忘头条创作挑战赛还记得年少时,初读浮生六记,那是风乍起吹皱一池春水的心动和喜欢。而如今,已是中年,再次翻开浮生六记,走进沈复和芸娘的世界之时,却体会到了一种难以言说的无奈,悲痛,还有
始于行动,终于成功先行动再完美,不行动一切为零我珍惜生命中的每一天。我要在困境中寻找机遇。我要控制情绪笑遍世界。我要每晚反省自己的行为。培养自身,做一个有魅力的人。处处留心,重视每一个人。听到不时我
当代散文观水墨丹霞文周超出兰州向西北,一路上土黄色的荒山土岭连绵不绝,像那黄河混浊的波涛一般,一浪接着一浪,不知何处是尽头。山上草本木本植物稀少,一片片的山岭沟壑很少有绿色植被的覆盖,苍穹之下除了土
三八女王节福利,妇女节景区门票免费,跟花儿一起放松身心放假通知!就在明天(3月8日)三八妇女节女王们可放假半天!三八妇女节即将到来不少景区推出了妇女节福利赶紧收藏起来!三月八日,是国际妇女节,也是春天的脚步渐入人心。这个季节里最令人期
雷锋精神代代相传,青春志愿你我同行1940年12月18日,雷锋在湖南长沙雷锋镇简家塘一户贫苦农民家里出生。和千千万万受剥削受压迫的劳动人民一样,在旧社会里,我家也受尽了旧制度的折磨和凌辱解放了,我才脱出苦海见青天!
原来张颂文才是最大赢家,妻子貌美如花,自己还有菜园和别墅有关张颂文的最新消息,挺让人意外的,他居然早已结婚,且育有一双儿女,饰演疯驴子的王沛禄在直播间内回复网友颂文哥早结婚了,随后此段对话冲上热搜,无数高启强迷妹心碎当场,消息虽从朋友之
贵州省六盘水市第二十三中学多彩课程助力美育特色文化点亮青春建校仅九年,贵州省六盘水市第二十三中学(以下简称二十三中)以黑马之势迅速发展。学校充分贯彻党的教育方针,形成了美育特色教学模式,以美育人以美化人,把培育和践行社会主义核心价值观融入