ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Huggingface中的BERT模型的使用方法

2021-09-21 16:02:21  阅读:309  来源: 互联网

标签:BERT 模型 Huggingface 使用 hidden 方法 句子


  1. 安装Huggingface的transformers库,安装该库之前要确保下载了pytorch或者tensorflow2.0的框架。
pip install transformers
```吗  
2. transformers库安装好之后我们就可以使用其提供的预训练模型进行使用了。使用之前先介绍一些相关的内容:一个完整的transformer模型主要包含三个部分,分别是Config,Tokenizer和Model。
其中Config是配置类,控制模型的名称,最终输出的样式,隐藏层的宽度和深度,激活函数的类别等。Tokenizer是一个将纯文本转换为编码的过程,其并不涉及将词转化为词向量的过程,仅仅是将纯文本分词并添加一些标记,比如MASK,CLS,SEP等。Model也就是各种各样的模型。
3. 使用模型之前一般需要下载该模型对应的一些文件,可以直接采用from_pretrained方法内指定模型的名称,然后运行之后就会自动进行下载,不过一般这种方法在国内并不可行,因为需要到对方的服务器上下载对应的文件,下载速度也是很慢。一般情况下我们直接去官网下载对应模型的相关文件保存到本地,然后使用即可,主要保存文件的时候不要将其名称改变。
4. 下面主要介绍一点有关BERT模型的使用方法。
首先就是Tokenizer的使用方法,使用tokenizer = BertTokenizer.from_pretrained('./bert-base-uncased')该方式创建一个tokenizer。该工具主要是用于将文本进行分词并转换为对应的索引值,以便于方便输入BERT模型,该工具提供了很多方法,比如tokenize,encode和encode_plus等,在这里就不再赘述,主要介绍一些__call__方法的使用,因为官方也推荐使用该方法。
5. 对于BERT模型的输入,一般需要对于句子加一些特殊符号标记,比如[CLS]用于句子的开头,[SEP]用于句子的结尾,当我们直接使用tokenizer(text)方法的时候,它默认会为其添加这两种标记,如果不需要的话,可以利用参数add_special_tokens=False来控制。
6. 我们可以将句子形式处理为[text1,text2,....textn]的形式,这可以表示为一个batch的句子,调用上面的方法之后就会返回其分词后的结果,返回的结果是一个字典,主要包括input_ids,token_type_ids,attention_mask,其中input_ids表示的就是分词后其对应的索引id,token_type_ids用来表示属于哪个句子,因为BERT允许输入句子对的形式,值为0表示为一个句子,值为1表示为另一个句子,attention_mask表示是否需要被mask掉,因为该方法可以添加padding参数,用来进行pad补齐。
7. 上面说到BERT可以接受句子对的输入形式,则我们可以将句子处理为[[句子1,句子2],[句子1,句子2],....[句子1,句子2]]的形式,经过该方法之后,他会将两个句子对合在一起,中间用一个[SEP]标记进行分割;该方法还有很多参数可以使用,比如return_tensors表示返回tensor类型,默认为普通类型,'pt'表示返回pytorch中的tensor等。一般需要跟着padding参数一起使用。
8. 分完词之后就可以将其结果输入模型中了,模型的输出结果一般有last_hidden_state,pooler_output,hidden_states,attentions四类,默认情况下只有前两个,后两个需要手动设置参数。具体使用代码如下所示:
```python
model_out = bert_model(**token_out,output_hidden_states=True,output_attentions=True)

其中last_hidden_state表示BERT模型最后一层的输出,包括[CLS]和[SEP],可以将其用作命名实体识别之类的任务。大小为[batch,seq_len,hidden_state]
pooler_output表示的是将[CLS]这个标记的编码经过处理后的结果,可以用来处理分类任务。大小为[batch,hidden_state]
hidden_states是一个元组,它的第一个元素表示embedding,其余的元素表示各个层的输出结果,大小为[batch,seq_len_state]。
attentions表示每一层的注意力权重,大小为[batch_size, num_heads, sequence_length, sequence_length]

标签:BERT,模型,Huggingface,使用,hidden,方法,句子
来源: https://www.cnblogs.com/noob-l/p/15316744.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有