赞
踩
如图
上图显示的是BERT输入表示
总述:输入嵌入分别是token embeddings, segmentation embeddings 和position embeddings 的总和
BERT最主要的组成部分便是,词向量(token embeddings)、段向量(segment embeddings)、位置向量(position embeddings)
词向量:是模型中关于词最主要的信息
段向量:是因为BERT里面的下一句的预测任务,所以会有两句拼接起来,上句与下句,上句有上句段向量,下句则有下句段向量,也就是图中A与B。此外,句子末尾都有加[SEP]结尾符,两句拼接开头有[CLS]符
位置向量:是因为 Transformer 模型不能记住时序,所以人为加入表示位置的向量
之后这三个向量拼接起来的输入会喂入BERT模型,输出各个位置的表示向量
0、概述
想要获取获取bert模型的输出非常简单,使用 model.get_sequence_output()和model.get_pooled_output() 两个方法,但这两种方法针对NLP的任务需要进行一个选择
1、output_layer = model.get_sequence_output()
这个获取每个token的output 输出[batch_size, seq_length, embedding_size] 如果做seq2seq 或者ner 用这个
2、output_layer = model.get_pooled_output()
这个输出 是获取句子的output
3、注意
bert模型对输入的句子有一个最大长度,对于中文模型,我看到的是512个字。
当我们用model.get_sequence_output()获取每个单词的词向量的时候注意,头尾是[CLS]和[SEP]的向量。做NER或seq2seq的时候需要注意。
最近在做基于BERT的智能问答,所以对BERT进行了进一步的学习,将自己平时的学习的过程进行了简单的记录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。