当前位置: 首页 > news >正文

HuggingFace项目实战之填空任务实战

目录:

    • 一、使用场景
    • 二、代码分析

一、使用场景

大模型在填空任务中的应用主要涉及自动补全、内容生成和知识推理等场景,其核心能力在于基于上下文预测缺失信息。

二、代码分析

importtorchfromtransformersimportAutoTokenizer#加载tokenizertokenizer=AutoTokenizer.from_pretrained('google-bert/bert-base-chinese')tokenizer

fromdatasetsimportload_dataset#加载数据集dataset=load_dataset(path='lansinuote/ChnSentiCorp')#编码f=lambdax:tokenizer(x['text'],truncation=True,max_length=30,return_token_type_ids=False)dataset=dataset.map(f,remove_columns=['text','label'])#过滤句子长度f=lambdax:len(x['input_ids'])>=30dataset=dataset.filter(f)#重置label字段deff(data):#定义第15个字为labeldata['label']=data['input_ids'][15]#替换句子中的第15个字为maskdata['input_ids'][15]=tokenizer.mask_token_idreturndata dataset=dataset.map(f)#设置数据类型dataset.set_format('pt')dataset,dataset['train'][0]

loader=torch.utils.data.DataLoader(dataset['train'],batch_size=8,shuffle=True,drop_last=True)data=next(iter(loader))fork,vindata.items():print(k,v.shape)len(loader)

#查看数据样例forq,ainzip(data['input_ids'],data['label']):print(tokenizer.decode(q))print(tokenizer.decode(a))print('==============')

#定义模型classModel(torch.nn.Module):def__init__(self):super().__init__()#加载预训练模型fromtransformersimportAutoModel self.pretrained=AutoModel.from_pretrained('google-bert/bert-base-chinese')self.fc=torch.nn.Linear(in_features=768,out_features=tokenizer.vocab_size)defforward(self,input_ids,attention_mask,label=None):#使用预训练模型抽取数据特征withtorch.no_grad():last_hidden_state=self.pretrained(input_ids=input_ids,attention_mask=attention_mask).last_hidden_state#取第15个词的特征向量last_hidden_state=last_hidden_state[:,15]#对抽取的特征只取第一个字的结果做分类即可out=self.fc(last_hidden_state).softmax(dim=1)#计算lossloss=NoneiflabelisnotNone:loss=torch.nn.functional.cross_entropy(out,label)returnloss,out model=Model()model(**data)

#执行训练deftrain():optimizer=torch.optim.Adam(model.parameters(),lr=1e-4)forepochinrange(5):fori,datainenumerate(loader):loss,out=model(**data)loss.backward()optimizer.step()optimizer.zero_grad()ifi%200==0:out=out.argmax(dim=1)acc=(out==data['label']).sum().item()/len(data['label'])print(epoch,i,len(loader),loss.item(),acc)train()

#执行测试deftest():loader_test=torch.utils.data.DataLoader(dataset['test'],batch_size=8,shuffle=True,drop_last=True)correct=0total=0fori,datainenumerate(loader_test):withtorch.no_grad():_,out=model(**data)out=out.argmax(dim=1)correct+=(out==data['label']).sum().item()total+=len(data['label'])print(i,len(loader_test),correct/total)ifi==5:breakreturncorrect/total test()

http://www.jsqmd.com/news/235423/

相关文章:

  • EDCA Admission Protocols 发布:AI 系统进入“可拒绝接入”时代
  • 【软件测试】5_性能测试 _常用性能测试工具对比
  • Alignment Protocol v3.0:定义 AI 系统的合法接入语义
  • 【计算机毕业设计案例】基于python-CNN卷积神经网络的宠物行为训练识别
  • 筑梦非洲:中国电建以实干绘就中非合作新图景
  • 【毕业设计】基于python-CNN卷积神经网络的宠物行为训练识别
  • 【课程设计/毕业设计】基于python-CNN卷积神经网络的宠物行为训练识别
  • AI 写论文哪个软件最好?深度测评:虎贲等考 AI 凭 “学术闭环” 登顶
  • 收藏学习!大语言模型全解析:原理、架构与应用
  • 企业虚拟服务平台AI能力落地实战:一线架构师的1个经典案例解析(附代码)
  • 【Python】【爬虫】复刻爬取豆瓣电影数据功能
  • 【必收藏】Java开发者转型大模型完全指南:从CRUD到AI,你的Java功底就是最大底气
  • 月薪从8K到40K:初级提示工程师→架构师的薪资跃迁指南,掌握这9个核心技能
  • 2026年大学生学习网络安全还有出路吗?
  • MCP:AI时代的“万能插座”,让大模型真正“动”起来
  • 【优化调度】基于遗传算法GA求解雾中任务调度计算附Matlab代码
  • 揭秘AI Agent:下一代人工智能的“全能管家”
  • 【图像加密】基于正弦 余弦混沌映射生成随机序列,对图像 RGB 三通道分别执行 “行移位 - 列移位 - XOR 异或” 操作实现图像加密解密附matlab代码
  • A.每日一题——85. 最大矩形
  • 云雀播放器 6.35.5| 高颜值音乐播放器 动画非常流畅 全球超1亿用户
  • springboot微服务框架中,a服务的aa方法中调用了b服务的bb方法,然后调用c服务的cc方法,由于bb方法会更新数据库,但是需要等到cc方法执行成功,才要把事务提交,如果cc方法不成功,就回滚
  • Manjaro 制作 Ventoy 多系统启动盘终极指南(避坑版)
  • springboot怎么将事务设置为pending,等另外一个请求ok了,再做commit
  • vivado hls设计总结(二十)
  • OBS面部追踪插件终极指南:从入门到精通
  • 大学生Kali学习高频命令合集 12个实操案例 覆盖渗透测试基础场景
  • 深度学习计算机毕设之基于python-CNN卷积神经网络的宠物行为训练识别
  • 学长亲荐!继续教育必备TOP8 AI论文软件深度测评
  • Golang map取不存在的key时返回零值
  • Scarab空洞骑士模组管理器:零基础快速上手完全指南