【Pytorch神经网络理论篇】 38 Transformers:安装说明+应用结构+AutoModel类

同学你好!本文章于2021年末编写,获得广泛的好评!

故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,

Pytorch深度学习·理论篇(2023版)目录地址为:

CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!https://v9999.blog.csdn.net/article/details/127587345欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~

 

Transfomers库是一个支持TensorFiow2.×和PyTorch的NLP库。它将BERTology系列的所有模型融合到一起,并提供统一的使用接口和预训练模型,为人们使用BERTology系列模型提供方便。

1 Transformers库定义

transfomersF中包括自然语言理解和自然语言生成两大类任务,提供了先进的通用架构,其中有超2个预训练模型(细分为100多种语言的版本)。

1.1 Transformers 快速完成的任务

1.1.1 通过执行脚本,使用训练好的SOTA模型,完成NLP任务

Transformers库附带一些脚本和在基准NLP数据集上训练好的SOTA模型。其中,基准NLP数据集包括SQuAD2.0和GLUE数据集。不需要训练,直接将这些训练好的SOTA模型运用到实际的NLP任务中,就可以取得很好的效果。

Tip:SOTA(Siate-Of-The-Art)是指目前应用于某项任务中“最好的”算法或技术。

1.1.2 调用API实现NLP任务的预处理与微调

Transformers库提供了一个简单的API,它用于执行这些模型所需的所有预处理和微调步骤。

在预处理方面,通过使用Transformers库的API,可以实现对文本数据集的特征提取,并能够使用自己搭建的模型对提取后的特征进行二次处理,完成各种定制任务。

在微调方面,通过使用Transformers库的APl,可以对特定的文本数据集进行二次训练,使模型可以在Transformers库中已预训练的模型的基础之上,通过少量训练来实现特定数据集的推理任务。

1.1.3 方便导入RensorFlow模型

Transfomers库提供了转换接口,可以轻松将TensorFlow训练的checkpoints模型导入PyTorch并使用.

1.1.4 转换为端计算模型

Transformers库还有一个配套的工具swift-coreml-transfomers,可以将使用TensorFlow 2.X或Pytorch训练好的Transformer模型转换成能够在iOS操作系统下使用的端计算模型。

1.2 Transformers库的安装方法

1.2.1 使用conda命令进行安装(版本相对滞后)

conda install transformers

使用这种方式安装的Transformers库与Anaconda软件包的兼容性更好,但所安装的Transformers库版本会相对滞后。

1.2.2 使用pip命令进行安装(版本最新)

pip install transformers

使用这种方式可以将Transformers库发布的最新版本安装到本机。

1.3 查看Transformers库的版本信息

Transfomers库会随着当前NLP领域中主流的技术发展而实时更新。目前,Transfomers库的更新速度非常快,可以通过Transfomers库安装路径下的transfomers\__init__.py文件找到当前安装的版本信息。

1.4 Transformers库的三层结构

  • 管道方式:高度集成的极简使用方式,只需要几行代码即可实现一个NLP任务。
  • 自动模型方式:可以将任意的BERTology系列模型载入并使用。
  • 具体模型方式:在使用时,需要明确指定具体的模型,并按照每个BERTology系列模型中的特定参数进行调用,该方式相对复杂,但具有较高的灵活度。

2 Transformers库中的AutoModel类

为了方便使用Transformers库,在Transformers库中,提供了一个AutoModel该类用来管理Transformers库中处理相同NLP任务的底层具体模型,为上层应用管道方提供了统一的接口。

通过AutoModel类,可以实现对BERTology系列模型中的任意一个模型载入并应用。

2.1 AutoModel类的子类

AutoModel类与BERTOlogy系列模型中的具体模型是一对多的关系。

在Transformers库的modeling_auto.Py源码文件中可以找到每种AutoModel类所管理的具体BERTology系列模型。

Anaconda3\envs\python38\Lib\site-packages\transformers\models\auto

MODEL_WITH_LM_HEAD_MAPPING对象代表AutoMcdeWthLMHead类与BERTology系列模型中的具体模型之间的映射关系。

在MODEL_WITHLM_HEAD_MAPPING 对象中,所列出的每个元素都可以实现AutoModeWithLMHead类所完成的完形填空任务.

2.1.1  AutoModel

基本模型的载入类,适用于Transformers库中的任何模型,也可以用于特征提取任务.

2.1.2 AutoModelForPreTraining

特征提取任务的模型载入类,适用于Transfomes库中所有的特征提取模型。

2.1.3 AutoModelForSequenceClassification

文本分类任务的模型载入类,适用于Transfomers库中所有的文本分类模型。

2.1.4 AutoModelForQuestionAnswering

阅读理解任务的模型载入类,适用于Trans-formers库中所有的阅读理解模型。

2.1.5 AutoModelWithLMHead

完形填空任务的模型载入类,适用于Transformers库中所有的遮蔽语言模型。

2.1.6 AutoModelForTokenClassification

实体词识别任务的模型载入类,适用于Transformers库中所有的实体词识别模型。

2.2 AutoModel类的模型加载机制

MODEL_WITH_LM_HEAD_MAPPING对象中,每个元素由两部分组成:具体模型的配置文件和具体模型的实现类。每一个具体模型的实现类会通过不同的数据集,被训练成多套预训练模型文件。

每套预训练模型文件都由3或4个子文件组成:词表文件、词表扩展文件(可选)、配置文件及权重文件。它们共用一个统一的字符串标识。

在使用自动加载方式调用模型时,系统会根据统一的预训练模型标识字符串,找到其对应的预训练模型文件,并通过网络进行下载,然后载入内存。

2.2.2 完形填空模型的调用过程如图所示。

每一个AutoModel类所对应的具体BERTology系列模型都是可以互相替换的。例如,在注意SUPPORTED_TASKS对象里,完形填空任务所对应的模型标识字符串为“distilroberta-base“,即默认加载RobertaForMaskedLM类。

3 Transformers库中的预训练模型

Transformers库中集成了非常多的预训练模型,方便用户在其基础上进行微调,这些模型统一放在model_cards分支下。

更多模型https://huggingface.co/models


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

clone是深拷贝还是浅拷贝_Python中的浅拷贝和深拷贝

本文翻译自copy in Python (Deep Copy and Shallow Copy),讲述了在Python语言中浅拷贝与深拷贝的不同用法。全文系作者原创,仅供学习参考使用,转载授权请私信联系,否则将视为侵权行为。码字不易,感谢支持。以下为全文内…

【Pytorch神经网络实战案例】32 使用Transformers库的管道方式实现:加载指定模型+文本分类+掩码语言建模+摘要生成+特征提取+阅读理解+实体词识别

管道方式是Transformers库中高度集成的极简使用方式。使用这种方式来处理NLP任务,只需要编写几行代码就能实现。通过本例的练习可以使读者对Transformers库的使用快速上手。 1 在管道方式中指定NLP任务 Transfomers库的管道方式使用起来非常简单,核心步…

jqprint获取打印页数_如何将每张打印多页PPT的PDF变成常规课件

在工作和学习中,经常会收到各种 PDF 文件,尤其是老师的课件。为了防止学生大量上传到各种文库网站赚积分,或者为了方便学生打印出来预习复习。通常,会在每页 PDF 里面,打印多张 PPT 内容。一般是 6 张或 9 张&#xff…

vba 判断文本框内容是否为空_【VBA】 数据输入 Inputbox 基本语法

在使用Excel 的过程中,如果需要用户输入简单的数据,作为“已知数”,那么可以使用inputbox 函数显示一个对话框,供用户在对话框中输入数据。 Inputbox 函数语法在一对话框来中显示提示,等待用户输入正文或按下按钮&…

无向图的深度优先遍历非递归_LeetCode0429: N叉树的层序遍历

题目介绍描述:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[[1],[3,2,4],[5,6] ]说明:树的深度不会超过 1000。 树的节点总数不会超过 5000。解题思路:★ …

一条龙操作有效解决PermissionError: [WinError 5] 拒绝访问的问题

1 问题描述 当在使用pip install 安装包时,如:pip install scrapy scrapyd scrapyd-client spiderkeeper出现报错:PermissionError: [WinError 5] 拒绝访问。: ‘c:\programdata\anaconda3\lib\site-packages\dateutil\easter.py’ 2 解决办…

预订态势图

//预订态势图JS//根据日期得到对应星期几 function getWeekByDay(riqi){//2017-01-23;var getWeek "";var arys1 new Array(); arys1riqi.split(-); //日期为输入日期,格式为 2013-3-10var ssdatenew Date(arys1[0],parseInt(arys1[1]-1),arys1…

altera fpga sdi输出方案_FPGA在电力电子中的应用有哪些?

大家好,很抱歉上周末没有及时更新公众号,本来这期想聊聊IGBT的拖尾电流,但是由于周末去深圳高交会(高新技术成果交易会)逛了一天,时间给耽搁了,感觉要想把拖尾电流讲清楚也不太容易,还得需要点时间&#xf…

【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

Unity之CharacterController2D学习笔记(1)——基础使用

在很多游戏类型中,玩家角色对物理行为的处理往往和场景中其它物体的行为有比较大的区别。比如角色可能会以90多公里的时速狂奔,同时一次跳跃能跳10多米高,与此同时却几乎不会有任何惯性。同时角色在正常情况下当头部碰到障碍物的时候&#xf…

【Pytorch神经网络实战案例】33 使用BERT模型实现完形填空任务

1 案例描述 案例:加载Transformers库中的BERT模型,并用它实现完形填空任务,即预测一个句子中缺失的单词。 2 代码实现:使用BERT模型实现完形填空任务 2.1 代码实现:载入词表,并对输入的文本进行分词转化--…

c++ string 删除字符_字符串操作的全面总结

来自公众号:C语言与cpp编程字符串操作看似简单,其实非常重要,不注意的话,经常出现代码运行结果和自己想要的不一致,甚至崩溃。本文总结了一些构建string对象方法、修改string对象的方法、string类型的操作函数、string…

【Pytorch神经网络理论篇】 40 Transformers中的词表工具Tokenizer

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络实战案例】34 使用GPT-2模型实现句子补全功能(手动加载)

1 GPT-2 模型结构 GPT-2的整体结构如下图,GPT-2是以Transformer为基础构建的,使用字节对编码的方法进行数据预处理,通过预测下一个词任务进行预训练的语言模型。 1.1 GPT-2 功能简介 GPT-2 就是一个语言模型,能够根据上文预测下…

电容式传感器位移性能试验报告_一文读懂什么是接近传感器?

点击上方蓝字 记得关注我们哦!接近传感器是一种非接触式传感器,当目标进入传感器的视野时,它会检测到物体(通常称为“目标”)的存在。取决于接近传感器的类型,传感器可以利用声音,光,红外辐射(IR)或电磁场来…

[dts]DTS实例分析

2. 通常会碰到的实际问题 到此,问题出现了: 1. 当写一个按键驱动,应该如何在*.dts或者*.dtsi中操作? 2. 当在串口driver中需要使用到某个pin脚作为普通输出IO,该如何操作? 3. 当在串口driver中需要使用某个muxpin脚作…

【解决】YOLOv6.1安装requirements.txt报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x84

案例描述: 使用YOLOV5时,报错解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x84 in position 285: illegal multibyte sequence 解决方案: 在C:\ProgramData\Anaconda3\lib\distutils\dist.py"文件搜索read 将parser.read(filenam…

bp 神经网络 优点 不足_深度学习之BP神经网络--Stata和R同步实现(附Stata数据和代码)

说明:本文原发于“计量经济圈”公众号,在此仅展示Stata的部分。R部分请移步至本人主页的“R语言与机器学习--经济学视角”专栏,或点击下方链接卡跳转。盲区行者:深度学习之BP神经网络--Stata和R同步实现(附R数据和代码…

Win10系统下使用anaconda在虚拟环境下安装CUDA及CUDNN

前排预警:不要挂梯子!!!!!使用清华源就行不然报错!!!! 解决check_hostname requires server_hostname_orange_の_呜的博客-CSDN博客错误描述在GitHub下载代码文件后使用pip install -r requirement.txt下载依赖包时出…

将XML格式转化为YOLO需要的txt格式(代码)

1、XML的格式 <annotation><folder>cr</folder><filename>crazing_2.jpg</filename><source><database>NEU-DET</database></source><size><width>200</width><height>200</height><…