BERT模型内部结构解析

BERT强大的特征抽取能力在各方面的应用如火如荼的展开,今日准备要对BERT输出的特征进行组合,以期能具有更好地变现,现在对model对象做详细的分析。

直观上,我们能够利用bert的信息有:1)pool out [CLS];2)encoder layer;3)hidden state first output

我们加载bert的过程如下:

model = modeling.BertModel(config=bert_config,
                           is_training=self.__is_training,
                           input_ids=self.input_ids,
                           input_mask=self.input_masks,
                           token_type_ids=self.segment_ids,
                           use_one_hot_embeddings=False)

无论你是通过什么方法得到的,这个model对象就是我们要解析的,通过debug我们得知,它有如下成员:

讲一下个人的理解,请批评指正:

all_encoder_layers: 经过transformer_model函数返回每个block的结果,即对应bert的12个Transformer层,均是原始高维数据。如果要分析不同层抽取何种特征,可以分析这个得出一些结论

embedding_table: vocab表,用于构建字符embedding向量

embedding_output: embedding结果

sequence_output: 是bert最后一层的输出,需要验证一下all_encoder_layers最后一层的输出有何区别

   维度为[Batch_szie, seq_length, hidden_size],这和一开始词向量的维度是一样的,只不过这个结果是经过Transformer Encoded提取特征之后的,包含重要的信息,也是bert想得到的结果

pooled_output: 一般分类任务需要的特征,pooled_output是取sequence_output的第一个切片然后线性投影获得,这个位置就是[CLS]

其实,明白这些之后就可以做一些特征组合进行操作了

原文地址:https://www.cnblogs.com/demo-deng/p/12354484.html

时间: 2024-10-30 08:16:45

BERT模型内部结构解析的相关文章

七层模型实例解析

网络七层模型实例解析 给朋友发邮件 1.物理层:建立.维护.断开物理连接.其传输介质是是网线. 2.数据链路层:建立逻辑连接.进行硬件地址寻址.差错校验等功能.即这份邮件的收发地址. 3. 网络层:进行逻辑地址寻址.实现不同网络之间的路径选择.即邮件的发送地和目的地的最优的路和发送的方案. 4. 传输层:定义传输数据的协议端口号,以及流控和差错校验.即确认邮件的发送者,收件者. 5. 会话层:建立.管理.中止会话.建立收件者和发送者的关系. 6. 表示层:数据的表示.安全.压缩.即邮件的打开方式

sax(用于处理XML事件驱动的推模型)解析例子

SAX解析 Java程序如下: import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.s

ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)

前面文章介绍了ASP.NET MVC中的模型绑定和验证功能,本着ASP.NET MVC没有魔法的精神,本章内容将从代码的角度对ASP.NET MVC如何完成模型的绑定和验证进行分析,已了解其原理. 本文的主要内容有: ● ModelBinder ● ValuePrivoder ● ModelMetadata ● 简单模型与复杂模型 ● 小结 ModelBinder ModelBinder是ASP. NET MVC用于模型绑定的核心组件,所有的ModelBinder都实现了IModelBinder

BERT模型介绍

前不久,谷歌AI团队新发布的BERT模型,在NLP业内引起巨大反响,认为是NLP领域里程碑式的进步.BERT模型在机器阅读理解顶级水平测试SQuAD1.1中表现出惊人的成绩:全部两个衡量指标上全面超越人类,并且还在11种不同NLP测试中创出最佳成绩,包括将GLUE基准推至80.4%(绝对改进7.6%),MultiNLI准确度达到86.7%(绝对改进率5.6%)等.BERT模型是以Transformer编码器来表示,本文在详细介绍BERT模型,Transformer编码器的原理可以参考(). 论文

BERT模型在多类别文本分类时的precision, recall, f1值的计算

BERT预训练模型在诸多NLP任务中都取得最优的结果.在处理文本分类问题时,即可以直接用BERT模型作为文本分类的模型,也可以将BERT模型的最后层输出的结果作为word embedding导入到我们定制的文本分类模型中(如text-CNN等).总之现在只要你的计算资源能满足,一般问题都可以用BERT来处理,此次针对公司的一个实际项目--一个多类别(61类)的文本分类问题,其就取得了很好的结果. 我们此次的任务是一个数据分布极度不平衡的多类别文本分类(有的类别下只有几个或者十几个样本,有的类别下

win10 + 独显 + Anaconda3 + tensorflow_gpu1.13 安装教程(跑bert模型)

这里面有很多坑,最大的坑是发现各方面都装好了结果报错  Loaded runtime CuDNN library: 7.3.1 but source was compiled with: 7.4.1,这是由于最新的tensorflow1.13需要用 Cudnn7.4.1编译.这个问题,StackOverflow上有人问到,但是目前依然未有人给出解决办法,下文会详述. 1. 去nvida官网下载显卡对应的驱动 2.下载安装Anaconda3,安装时勾选加入环境变量 3. 进入Anaconda Pr

使用BERT模型生成句子序列向量

之前我写过一篇文章,利用bert来生成token级向量(对于中文语料来说就是字级别向量),参考我的文章:<使用BERT模型生成token级向量>.但是这样做有一个致命的缺点就是字符序列长度最长为512(包含[cls]和[sep]).其实对于大多数语料来说已经够了,但是对于有些语料库中样本的字符序列长度都比较长的情况,这就有些不够用了,比如我做一个法院文书领域预测任务,里面的事实部分许多都大于1000字,我做TextCharCNN的时候定义的最大长度为1500(能够涵盖百分之95以上的样本).

图示详解BERT模型的输入与输出

一.BERT整体结构 BERT主要用了Transformer的Encoder,而没有用其Decoder,我想是因为BERT是一个预训练模型,只要学到其中语义关系即可,不需要去解码完成具体的任务.整体架构如下图: 多个Transformer Encoder一层一层地堆叠起来,就组装成了BERT了,在论文中,作者分别用12层和24层Transformer Encoder组装了两套BERT模型,两套模型的参数总数分别为110M和340M. 二.再次理解Transformer中的Attention机制.

使用原始模型,模型参数解析

使用原始模型,模型参数解析 STEPS: (400, 450) MAX_ITER: 500 表示最大轮数和改变学习率的轮次数 https://blog.csdn.net/zziahgf/article/details/79803171 原文地址:https://www.cnblogs.com/miaozhijuan/p/12556343.html