fastNLP.modules.encoder.bert module

undocumented 这个页面的代码很大程度上参考(复制粘贴)了https://github.com/huggingface/pytorch-pretrained-BERT的代码, 如果你发现该代码对你

有用,也请引用一下他们。

class fastNLP.modules.encoder.bert.BertModel(config, *inputs, **kwargs)[源代码]

基类:torch.nn.modules.module.Module

别名 fastNLP.modules.BertModel fastNLP.modules.encoder.BertModel

BERT(Bidirectional Embedding Representations from Transformers).

用预训练权重矩阵来建立BERT模型:

model = BertModel.from_pretrained(model_dir_or_name)

用随机初始化权重矩阵来建立BERT模型:

model = BertModel()
参数
  • vocab_size (int) – 词表大小,默认值为30522,为BERT English uncase版本的词表大小

  • hidden_size (int) – 隐层大小,默认值为768,为BERT base的版本

  • num_hidden_layers (int) – 隐藏层数,默认值为12,为BERT base的版本

  • num_attention_heads (int) – 多头注意力头数,默认值为12,为BERT base的版本

  • intermediate_size (int) – FFN隐藏层大小,默认值是3072,为BERT base的版本

  • hidden_act (str) – FFN隐藏层激活函数,默认值为``gelu``

  • hidden_dropout_prob (float) – FFN隐藏层dropout,默认值为0.1

  • attention_probs_dropout_prob (float) – Attention层的dropout,默认值为0.1

  • max_position_embeddings (int) – 最大的序列长度,默认值为512,

  • type_vocab_size (int) – 最大segment数量,默认值为2

  • initializer_range (int) – 初始化权重范围,默认值为0.02

property dtype

torch.dtype: The dtype of the module (assuming that all the module parameters have the same dtype).

init_bert_weights(module)[源代码]

Initialize the weights.

training: bool
forward(input_ids, token_type_ids=None, attention_mask=None, output_all_encoded_layers=True, position_ids=None)[源代码]
参数
  • input_ids (torch.LongTensor) – bsz x max_len的输入id

  • token_type_ids (torch.LongTensor) – bsz x max_len,如果不输入认为全为0,一般第一个sep(含)及以前为0, 一个sep之后为1

  • attention_mask – 需要attend的为1,不需要为0

  • output_all_encoded_layers (bool) – 是否输出所有层,默认输出token embedding(包含bpe, position以及type embedding) 及每一层的hidden states。如果为False,只输出最后一层的结果

  • position_ids (torch.LongTensor) – bsz x max_len, position的id

返回

encode_layers: 如果output_all_encoded_layers为True,返回list(共num_layers+1个元素),每个元素为 bsz x max_len x hidden_size否则返回bsz x max_len x hidden_size的tensor; pooled_output: bsz x hidden_size为cls的表示,可以用于句子的分类

save_pretrained(save_directory)[源代码]

保存模型到某个folder