首页 > 其他分享 >BERT 微调实战

BERT 微调实战

时间:2024-11-08 14:58:57浏览次数:1  
标签:实战 BERT torch 微调 train SQuAD capital

带着问题来学习

  1. BERT 的预训练过程是如何完成的,在预训练过程中,采用了哪两种任务?

  2. 本次实战是用 SQuAD 数据集微调 BERT, 来完成我们的问答任务,你能否用 IMDB 影评数据集来微调 BERT,改进 BERT 的结果准确率?

文章最后会公布问题的参考答案~

一、BERT 简介

BERT 全称 Bidirectional Encoder Representations from Transformers,是 Google 在2018 年提出来的,核心架构是多层 Transformer 编码器,引入了 Masked Language Model(MLM)和 Next Sentence Prediction(NSP)两个任务来训练模型。对于每个任务,可以通过在预训练模型的顶部添加一些额外的层来微调模型。

微调 BERT 需要用到 HuggingFace 组件,建议先学习参考:HuggingFace 核心组件及应用实战

二、BERT 实战:原生 BERT 完成问答任务

我们用 Google 原生发布的 BERT 去做问答任务,看看它效果如何。完成问答任务步骤如下:

  1. 准备问题和问答类型任务

  2. 下载含有问题任务头的原始版 BERT

  3. 直接用 BERT 做推理,回答问题

代码(BERT_for_QA.py)如下:

from transformers import BertTokenizer, BertForQuestionAnswering
import torch
import numpy as np

# Set the random seed for PyTorch and NumPy
torch.manual_seed(0)
np.random.seed(0)

tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForQuestionAnswering.from_pretrained('bert-base-uncased')

question, text = "What is the capital of China?", "The capital of China is Beijing."

inputs = tokenizer.encode_plus(question, text, add_special_tokens=True, return_tensors="pt")
with torch.no_grad():
    outputs = model(**inputs)

answer_start_index = torch.argmax(outputs.start_logits)
answer_end_index = torch.argmax(outputs.end_logits) + 1

predict_answer_tokens = inputs['input_ids'][0][answer_start_index:answer_end_index]
predicted_answer = tokenizer.decode(predict_answer_tokens)

print("What is the capital of China?", predicted_answer)

运行结果如下:

C:\Users\Lenovo\anaconda3\envs\pytorch211\python.exe "BERT_for_QA.py" 
Some weights of BertForQuestionAnswering were not initialized from the model checkpoint at bert-base-uncased and are newly initialized: ['qa_outputs.bias', 'qa_outputs.weight']
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
What is the capital of China? the

其中,我们的问题是:What is China's capital?

并提供的上下文: The capital of China is Beijing.

BERT 回答是: the

标签:实战,BERT,torch,微调,train,SQuAD,capital
From: https://www.cnblogs.com/bingohuang/p/18535089

相关文章

  • 网络安全ctf比赛/学习资源整理,解题工具、比赛时间、解题思路、实战靶场推荐收藏!
    前言对于想学习或者参加CTF比赛的朋友来说,CTF工具、练习靶场必不可少,今天给大家分享自己收藏的CTF资源,希望能对各位有所帮助。CTF在线工具首先给大家推荐我自己常用的3个CTF在线工具网站,内容齐全,收藏备用。1、CTF在线工具箱:http://ctf.ssleye.com/包含CTF比赛中常用的编码......
  • 实战:看懂并分析执行计划——Index Scan (NonClustered)
    根据该执行计划截图中的信息,我们可以看到SQLServer在执行该查询时使用了IndexScan(NonClustered),这通常表示数据库未能利用索引进行精确查找,因此进行了较大的扫描操作。以下是对每行信息的解释和优化建议。IndexScan(NonClustered)解释PhysicalOperation:In......
  • 【NLP】使用 SpaCy 通过 LLM 合成数据微调 NER 模型
    在我们之前的文章“使用SpaCy、ollama创建用于命名实体识别的合成数据集”中,我们探讨了如何使用Qwen生成合成数据,以自动化命名实体识别(NER)的注释过程。通过利用合成数据,我们能够高效地准备来自SmoothNLP金融新闻数据集  的高质量数据集。现在,在这篇文章中,我们将更进......
  • 【模块一】kubernetes容器编排进阶实战之k8s基础概念
    kubernetes基本介绍kubernetes组件简介   -master:       主人,并不部署服务,而是管理salve节点。      后期更名为:controllplane,控制面板。         etcd:      2379(客户端通信)、2380(集群内部通信)         ......
  • 弱口令、子域名、md5、伪随机数、目录爆破与CTF实战
    web21——弱口令爆破&customiterator进去要求输入账号密码,账号输入admin,一般来说管理员用户名都会是这个,密码随便输,然后burpsuite抓包可以看到账号密码在Authorization传输,形式是账号:密码的base64加密,把他发到Intruder模块模式选sniper,因为要对整个账号密码字符进行加密,不......
  • 36套Web前端全栈Vue3项目实战P7架构-入门篇+项目篇+进阶篇+架构篇
    36套Web前端全栈Vue3项目实战P7架构-入门篇+项目篇+进阶篇+架构篇36套eb前端全栈Vue3项目实战-入门篇+项目篇+进阶篇+架构篇,P7前端架构,高薪面试,Vue3源码剖析视频课程-技术栈-TypeScript+Vute+ElementPlus+Koa2+Node.js+Pinia+EChart4.0+Uni-App+React18+Flutter+Web3D+Vant+UI,项......
  • Rust编程与项目实战-结构体
    《Rust编程与项目实战》(朱文伟,李建英)【摘要书评试读】-京东图书(jd.com)在Rust中,结构体(Struct)是一种自定义数据类型,它允许我们将多个相关的值组合在一起,形成一个更复杂的数据结构。结构体在Rust中被广泛应用于组织和管理数据,具有灵活性和强大的表达能力。本节将详细介绍Rus......
  • 鸿蒙 Next 社交应用中的安全登录与密码管理实战
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在开发多语言电商平台方面的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在社交应用的......
  • 鸿蒙 Next 企业级应用安全认证体系构建实战
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在开发多语言电商平台方面的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在企业级应用......
  • 移动Web前端高效开发实战:HTML 5 + CSS 3 + JavaScript + Webpack + React Native + Vu
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqsoHTML5新特性与应用:介绍HTML5的新特性,包括语义化标签、本地存储、设备兼容、连接特性等,并讲解如何在移动Web前端开发中充分利用这些特性提升用户体验。CSS3样式与动画设计:详细讲解CSS3的样式设计和动画效果,包括选择器、盒......