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

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

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

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

以下为2021版原文~~~~

如果想进一步深入研究,则需要了解Transformers库中更底层的实现,学会对具体的BERTology系列模型进行单独加载和使用。

1 Transformers库的文件结构

1.1 详解Transformers库中的预训练模型

在Transformers库中,预训练模型文件主要有3种,它们的具体作用如下:

  1. 词表文件:在训练模型时,将该文件当作一个映射表,把输入的单词转换成具体数字。(文本方式保存)
  2. 配置文件:存放模型的超参数,将源码中的模型类根据配置文件的超参数进行实例化后生成可用的模型。(文本方式保存)
  3. 权重文件:对应可用模型在内存中各个变量的值,待模型训练结束之后,将这些值保存起来。加载模型权重的过程,就是这些值“覆盖”到内存中的模型变量里,使整个模型恢复到训练后的状态。(二进制方式保存)

1.2 BERT模型的关联文件图

图3-18(a)BERT模型的基本预训练模型相关的词表文件,词表文件中是一个个具体的单词,每个单词的序号就是其对应的索引值。

图3-18(b)BERT模型的基本预训练模型相关的配置文件,配置文件则显示了其模型中的相关参数,其中部分内容如下。架构名称:BertForMaskedLM。注意力层中Dropout的丢弃率:0.1。隐藏层的激活函数:GEL∪激活函数。隐藏层中Dropout的丢弃率:0.1。

1.3 Transformers库的文件目录

# 目录地址
\Anaconda3\envs\python38\Lib\site-packages\transformers

1.3.1 配置代码文件

以confiquraton开头的文件,是BERTOOQy系列模型的配置代码文件。

1.3.2 模型代码文件

以modeling开头的文件,是BERTology系列模型的模型代码文件

1.3.3 词表代码文件

以tokenization开头的文件,是BERToogy系列模型的词表代码文件。

1.4 每个模型都对应以上三个文件

每个模型都对应3个代码文件,存放着关联文件的下载地址。

1.4.1 举例:BERT模型对应文件列表:

配置代码文件:configuration_bert.py。
模型代码文件:modeling_bert,py。
词表代码文件:tokenization_bert.py。

1.5 加载预训练模型

训练模型的主要部分就是模型代码文件、配置代码文件和词表代码文件这3个代码文件。对于这3个代码文件,在Transformers库里都有对应的类进行操作。

配置类(Configuration Classes):是模型的相关参数,在配置代码文件中定义。

模型类(Model Classes):是模型的网络结构,在模型代码文件中定义。

词表类(TOkenizer Classes):用于输入文本的词表预处理,在词表代码文件定义。

这3个类都有from_pretrained方法,

1.5.1 调用函数简述

from_pretrained():可以加已经预训练好的模型或者参数。

save_pretraining():将模型中的提示配置文件、权重文件、词表文件保存在本地,以便可以使用from_pretraining方法对它们进行新加载。

1.5.2 自动加载

在使用时,通过向from_pretrained方法中传入指定模型的版本名称,进行自动下载,并加载到内存中。

from transformers import BertTokenizer,BertForMaskedLM# 使用bert-base-uncased版本的BERT预训练模型,其中BertTokenizer类用于加载词表,BertForMaskedLM类会自动加载配置文件和模型文件。tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')#加载词表model = BertForMaskedLM.frompretrained('bert-base-uncased')#加载模型# 该代码运行后,系统会自动从指定网站加载对应的关联文件。这些文件默认会放在系统的用户目录中

1.5.3 手动加载

在源码中,找到对应的下载地址,手动加载后,再用frompretrained方法将其载入。

from transformers import BertTokenizer,BertForMaskeduM#加载词表
tokenizer=BertTokenizer.frompretrained(r'./bert-base-uncased/bert-base-uncased-vocab.txt')
#加载模型
model=BertForMaskedLM.frompretrained('./bert-base-uncased/bert-base-uncased-pytorch_model.bin',conig='./bert-base-uncased/bert-base-uncased-conig.json')# 手动加载与自动加载所使用的接口是一样的,手动加载需要指定加载文件的具体路径,而且在使用BertForMaskedLM类进行加载时,还需要指定配置文件的路径。

2 查找Transformers库中可以使用的模型

通过模型代码文件的命名,可以看到Transformers库中能够使用的模型。但这并不是具体的类名,想要找到具体的类名,可以采用以下3种方式:
(1)通过帮助文件查找有关预训练模型的介绍。
(2)在Transformers库的__init__.py文件中查找预训练模型。【相对费劲,但更为准确】
(3)使用代码方式输出Transformers库中的宏定义。

2.1 在Transformers库的__init__.py文件中查找预训练模型。【相对费劲,但更为准确】

2.2 使用代码方式输出Transformers库中的宏定义

from transformers import BLENDERBOT_SMALL_PRETRAINED_MODEL_ARCHIVE_LIST
print("输出全部模型:",BLENDERBOT_SMALL_PRETRAINED_MODEL_ARCHIVE_LIST)
# ['facebook/blenderbot_small-90M']

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

  1. 【Pytorch神经网络理论篇】 20 神经网络中的注意力机制

    注意力机制可以使神经网络忽略不重要的特征向量,而重点计算有用的特征向量.在抛去无用特征对拟合结果于扰的同时,又提升了运算速度. 1 注意力机制 所谓Attention机制,便是聚焦于局部信息的机制,比 ...

  2. 【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧

    1 散度在无监督学习中的应用 在神经网络的损失计算中,最大化和最小化两个数据分布间散度的方法,已经成为无监督模型中有效的训练方法之一. 在无监督模型训练中,不但可以使用K散度JS散度,而且可以使用其他 ...

  3. transformers库中使用DataParallel保存模型参数时遇到的问题记录

    pytorch中使用DataParallel保存模型参数时遇到的问题记录 之前使用Transformers库中的Bert模型在自己的文本分类任务上使用Transformers库里的Trainer方式进 ...

  4. 【Pytorch神经网络理论篇】 27 图神经网络DGL库:简介+安装+卸载+数据集+PYG库+NetWorkx库

    DGL库是由纽约大学和亚马逊联手推出的图神经网络框架,支持对异构图的处理,开源相关异构图神经网络的代码,在GCMC.RGCN等业内知名的模型实现上也取得了很好的效果. 1 DGL库 1.1 DGL库的 ...

  5. 【Pytorch神经网络理论篇】 37 常用文本处理工具:spaCy库+torchtext库

    在NLP的发展过程中,人们也开发了很多非常实用的工具,这些工具可以帮助开发人员快速地实现自然语言相关的基础处理,从而可以更好地将精力用在高层次的语义分析任务中下面详细介绍该领域中比较优秀的工具. 1 ...

  6. 【Pytorch神经网络理论篇】 09 神经网络模块中的损失函数

    1 训练模型的步骤与方法 将样本书记输入到模型中计算出正向的结果 计算模型结果与样本目标数值之间的差值(也称为损失值loss) 根据损失值,使用链式反向求导的方法,依次计算出模型中每个参数/权重的梯度 ...

  7. 【Pytorch神经网络理论篇】 29 图卷积模型的缺陷+弥补方案

    图卷积模型在每个全连接网络层的结果中加入了样本间的特征计算.其述质是依赖深度学特征与缺陷. 1.1 全连接网络的特征与缺陷 多层全连接神经网络被称为万能的拟合神经网络.先在单个网络层中用多个神经元节点 ...

  8. 【Pytorch神经网络理论篇】 01 Pytorch快速上手(一)概述+张量

    1 概述 Pytorch是基于Torch之上的python包,在底层主要通过张量的形式进行计算,Pytorch中的张量表示为同一数据类型的多位橘子. 1.1 基础数据类型的概述 1.标量:即具体的数字 ...

  9. 【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型

    1 ResNet模型 在深度学习领域中,模型越深意味着拟合能力越强,出现过拟合问题是正常的,训练误差越来越大却是不正常的. 1.1 训练误差越来越大的原因 在反向传播中,每一层的梯度都是在上一层的基础 ...

最新文章

  1. 2022-2028年中国网络出版产业投资分析及前景预测报告
  2. java 不可最小化,java – 这是最小化绑定失效的有效方法吗?
  3. Java finally语句到底是在return之前还是之后执行?
  4. Java 中的字符串(String)与C# 中字符串(string)的异同
  5. Git与Github操作指南(入门)
  6. 电脑系统修复有多重要?
  7. SigmaStar SSD201 开源记录
  8. init与clinit的区别
  9. nginx php返回500错误,nginx环境thinkphp,500错误
  10. Android—Broadcast原理
  11. vaex 处理海量数据_Vaex真香!几秒钟就能处理数十亿行数据,比Pandas、Dask更好用...
  12. 【词云】wordcloud安装与使用
  13. 数亿下载量的npm包被“投毒”,前端开源将如何?
  14. Python中执行系统命令常见的几种方法
  15. 配置 eNSP 连接VMware虚拟机网络
  16. Fedora9 的 初体验
  17. 全世界最全牛人的博客
  18. 2018大华软件大赛模拟赛第2题 (网络上有一台流媒体服务器S和一台客户端C,S向C发送流媒体数据。)...
  19. JavaScript 中的 Symbols 怎么用
  20. 不需要密码卸载Symantec Endpoint Protection

热门文章

  1. 华为MAC-VLAN举例
  2. odoo中关于打印word格式的文件,利用docxtemplate方法
  3. 我的C盘满了 如何清理一下
  4. 如何解决Vray for 3ds Max中的3个错误
  5. 保存到相册的视频怎么改封面?这个改封面小技巧很简单
  6. mongodb数据库扩展名_MongoDB文件型数据库
  7. Android安卓毕业设计,SpringBoot+MySQL+Android studio 实现一个二手交易平台APP
  8. 2021零基础学习人工智能(AI)思想篇
  9. 云和恩墨数据库人才招聘
  10.  定义一个变量,是一个三位数,求各个位数的和