news 2026/2/26 21:40:39

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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()

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/26 15:44:41

深度学习毕设项目推荐-基于python-CNN卷积神经网络的宠物行为训练识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/26 13:50:22

MCP:AI时代的“万能插座”,让大模型真正“动”起来

你是否曾想过,让AI不仅能聊天、写文章,还能直接帮你订机票、发邮件、控制家里的智能灯泡,甚至管理复杂的企业数据库? 这听起来像是科幻电影里的场景,但随着**MCP(Model Context Protocol,模型上…

作者头像 李华
网站建设 2026/2/26 19:41:14

揭秘AI Agent:下一代人工智能的“全能管家”

你是否厌倦了繁琐的重复性工作?是否幻想拥有一个能听懂需求、自主决策、帮你搞定一切的私人助理? AI Agent(人工智能代理)的出现,正在将这个幻想变为现实。如果说大语言模型(LLM)是拥有了丰富知…

作者头像 李华
网站建设 2026/2/24 10:42:33

深度学习计算机毕设之基于python-CNN卷积神经网络的宠物行为训练识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/2/26 18:17:21

大数据领域Hive在零售行业的数据处理应用

Hive在零售行业的数据处理应用:从痛点到解决方案的全流程实践 引言:零售行业的“数据焦虑”与Hive的救赎 1. 零售人的痛点:当数据量超过“Excel极限” 作为零售行业的数据分析师,你是否遇到过这样的场景? 月底统计全国…

作者头像 李华