zoukankan      html  css  js  c++  java
  • 关于bert的输出是什么

    我们在使用Bert进行微调的时候,通常都会使用bert的隐含层的输出,然后再接自己的任务头,那么,我们必须先知道bert的输出都是什么,本文接下来就具体记录下bert的输出相关的知识。
    由于我们微调bert的时候一般选用的是中文版的模型,因此,接下来我们加载的就是中文预训练模型bert。直接看代码:

    import torch
    from transformers import BertTokenizer, BertModel
    
    bertModel = BertModel.from_pretrained('bert-base-chinese', output_hidden_states=True, output_attentions=True)
    tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
    
    text = '让我们来看一下bert的输出都有哪些'
    input_ids = torch.tensor([tokenizer.encode(text)]).long()
    outputs = bertModel(input_ids)
    print(len(outputs))
    print(outputs.keys())
    print(outputs['last_hidden_state'].shape)
    print(outputs['pooler_output'].shape)
    print(len(outputs['hidden_states']))
    print(len(outputs['attentions']))
    

    结果:

    4
    odict_keys(['last_hidden_state', 'pooler_output', 'hidden_states', 'attentions'])
    torch.Size([1, 18, 768])
    torch.Size([1, 768])
    13
    12
    

    可以看出,bert的输出是由四部分组成:
    last_hidden_state:shape是(batch_size, sequence_length, hidden_size),hidden_size=768,它是模型最后一层输出的隐藏状态。(通常用于命名实体识别)
    pooler_output:shape是(batch_size, hidden_size),这是序列的第一个token(classification token)的最后一层的隐藏状态,它是由线性层和Tanh激活函数进一步处理的。(通常用于句子分类,至于是使用这个表示,还是使用整个输入序列的隐藏状态序列的平均化或池化,视情况而定)
    hidden_states:这是输出的一个可选项,如果输出,需要指定config.output_hidden_states=True,它也是一个元组,它的第一个元素是embedding,其余元素是各层的输出,每个元素的形状是(batch_size, sequence_length, hidden_size)
    attentions:这也是输出的一个可选项,如果输出,需要指定config.output_attentions=True,它也是一个元组,它的元素是每一层的注意力权重,用于计算self-attention heads的加权平均值。

    参考:https://blog.csdn.net/sunyueqinghit/article/details/105157609

  • 相关阅读:
    BZOJ 3150 [Ctsc2013]猴子 ——期望DP 高斯消元
    BZOJ 4569 [Scoi2016]萌萌哒 ——ST表 并查集
    BZOJ 4590 [Shoi2015]自动刷题机 ——二分答案
    BZOJ 3462 DZY Loves Math II ——动态规划 组合数
    BZOJ 4827 [Shoi2017]分手是祝愿 ——期望DP
    BZOJ 4827 [Hnoi2017]礼物 ——FFT
    BZOJ 4826 [Hnoi2017]影魔 ——扫描线 单调栈
    ZOJ 3874 Permutation Graph ——分治 NTT
    UVA 12633 Super Rooks on Chessboard ——FFT
    HDU 2065 "红色病毒"问题 ——快速幂 生成函数
  • 原文地址:https://www.cnblogs.com/xiximayou/p/15016604.html
Copyright © 2011-2022 走看看