原文:
huggingface.co/docs/transformers
BertGeneration
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/bert-generation
概述
BertGeneration 模型是一个可以利用 EncoderDecoderModel 进行序列到序列任务的 BERT 模型,如 Sascha Rothe, Shashi Narayan, Aliaksei Severyn 在 利用预训练检查点进行序列生成任务 中提出的那样。
论文摘要如下:
最近,大型神经模型的无监督预训练已经彻底改变了自然语言处理。通过从公开发布的检查点开始热启动,NLP 从业者已经在多个基准测试中推动了最新技术,同时节省了大量的计算时间。到目前为止,重点主要集中在自然语言理解任务上。在本文中,我们展示了预训练检查点对序列生成的有效性。我们开发了一个基于 Transformer 的序列到序列模型,与公开可用的预训练 BERT、GPT-2 和 RoBERTa 检查点兼容,并对初始化我们的模型(编码器和解码器)使用这些检查点进行了广泛的实证研究。我们的模型在机器翻译、文本摘要、句子拆分和句子融合方面取得了新的最新技术成果。
该模型由 patrickvonplaten 贡献。原始代码可在 此处 找到。
用法示例和提示
该模型可以与 EncoderDecoderModel 结合使用,以利用两个预训练的 BERT 检查点进行后续微调:
代码语言:javascript复制>>> # leverage checkpoints for Bert2Bert model...
>>> # use BERT's cls token as BOS token and sep token as EOS token
>>> encoder = BertGenerationEncoder.from_pretrained("bert-large-uncased", bos_token_id=101, eos_token_id=102)
>>> # add cross attention layers and use BERT's cls token as BOS token and sep token as EOS token
>>> decoder = BertGenerationDecoder.from_pretrained(
... "bert-large-uncased", add_cross_attention=True, is_decoder=True, bos_token_id=101, eos_token_id=102
... )
>>> bert2bert = EncoderDecoderModel(encoder=encoder, decoder=decoder)
>>> # create tokenizer...
>>> tokenizer = BertTokenizer.from_pretrained("bert-large-uncased")
>>> input_ids = tokenizer(
... "This is a long article to summarize", add_special_tokens=False, return_tensors="pt"
... ).input_ids
>>> labels = tokenizer("This is a short summary", return_tensors="pt").input_ids
>>> # train...
>>> loss = bert2bert(input_ids=input_ids, decoder_input_ids=labels, labels=labels).loss
>>> loss.backward()
预训练的 EncoderDecoderModel 也可以直接在模型中心使用,例如:
代码语言:javascript复制>>> # instantiate sentence fusion model
>>> sentence_fuser = EncoderDecoderModel.from_pretrained("google/roberta2roberta_L-24_discofuse")
>>> tokenizer = AutoTokenizer.from_pretrained("google/roberta2roberta_L-24_discofuse")
>>> input_ids = tokenizer(
... "This is the first sentence. This is the second sentence.", add_special_tokens=False, return_tensors="pt"
... ).input_ids
>>> outputs = sentence_fuser.generate(input_ids)
>>> print(tokenizer.decode(outputs[0]))
提示:
- BertGenerationEncoder 和 BertGenerationDecoder 应与
EncoderDecoder
结合使用。 - 对于摘要、句子拆分、句子融合和翻译,输入不需要特殊标记。因此,输入末尾不应添加 EOS 标记。
BertGenerationConfig
class transformers.BertGenerationConfig
< source >
代码语言:javascript复制( vocab_size = 50358 hidden_size = 1024 num_hidden_layers = 24 num_attention_heads = 16 intermediate_size = 4096 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 initializer_range = 0.02 layer_norm_eps = 1e-12 pad_token_id = 0 bos_token_id = 2 eos_token_id = 1 position_embedding_type = 'absolute' use_cache = True **kwargs )
参数
-
vocab_size
(int
, 可选, 默认为 50358) — BERT 模型的词汇量。定义了在调用BertGeneration
时传递的inputs_ids
可以表示的不同标记数量。 -
hidden_size
(int
, 可选, 默认为 1024) — 编码器层和池化器层的维度。 -
num_hidden_layers
(int
, 可选, 默认为 24) — Transformer 编码器中的隐藏层数。 -
num_attention_heads
(int
, 可选, 默认为 16) — Transformer 编码器中每个注意力层的注意力头数。 -
intermediate_size
(int
, 可选, 默认为 4096) — Transformer 编码器中“中间”(通常称为前馈)层的维度。 -
hidden_act
(str
或function
, 可选, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
,"relu"
,"silu"
和"gelu_new"
。 -
hidden_dropout_prob
(float
, 可选, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的丢弃概率。 -
attention_probs_dropout_prob
(float
, optional, defaults to 0.1) — 注意力概率的丢弃比率。 -
max_position_embeddings
(int
, optional, defaults to 512) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如,512、1024 或 2048)。 -
initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 -
layer_norm_eps
(float
, optional, defaults to 1e-12) — 层归一化层使用的 epsilon。 -
pad_token_id
(int
, optional, defaults to 0) — 填充令牌 id。 -
bos_token_id
(int
, optional, defaults to 2) — 流开始令牌 id。 -
eos_token_id
(int
, optional, defaults to 1) — 流结束令牌 id。 -
position_embedding_type
(str
, optional, defaults to"absolute"
) — 位置嵌入的类型。选择"absolute"
,"relative_key"
,"relative_key_query"
中的一个。对于位置嵌入使用"absolute"
。有关"relative_key"
的更多信息,请参考 Self-Attention with Relative Position Representations (Shaw et al.)。有关"relative_key_query"
的更多信息,请参考 Improve Transformer Models with Better Relative Position Embeddings (Huang et al.) 中的 Method 4。 -
use_cache
(bool
, optional, defaults toTrue
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅在config.is_decoder=True
时相关。
这是用于存储 BertGenerationPreTrainedModel
配置的类。它用于根据指定的参数实例化 BertGeneration 模型,定义模型架构。使用默认值实例化配置将产生类似于 BertGeneration google/bert_for_seq_generation_L-24_bbc_encoder 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读来自 PretrainedConfig 的文档以获取更多信息。
示例:
代码语言:javascript复制>>> from transformers import BertGenerationConfig, BertGenerationEncoder
>>> # Initializing a BertGeneration config
>>> configuration = BertGenerationConfig()
>>> # Initializing a model (with random weights) from the config
>>> model = BertGenerationEncoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
BertGenerationTokenizer
class transformers.BertGenerationTokenizer
< source >
代码语言:javascript复制( vocab_file bos_token = '<s>' eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' sep_token = '<::::>' sp_model_kwargs: Optional = None **kwargs )
参数
-
vocab_file
(str
) — 包含实例化分词器所需词汇的 SentencePiece 文件(通常具有 .spm 扩展名)。 -
bos_token
(str
, optional, defaults to"<s>"
) — 序列开始令牌。 -
eos_token
(str
, optional, defaults to"</s>"
) — 序列结束令牌。 -
unk_token
(str
, optional, defaults to"<unk>"
) — 未知令牌。词汇表中不存在的令牌无法转换为 ID,而是设置为此令牌。 -
pad_token
(str
, optional, defaults to"<pad>"
) — 用于填充的令牌,例如在批处理不同长度的序列时使用。 -
sep_token
(str
, optional, defaults to"< --:::>"
): 分隔符令牌,用于从多个序列构建序列时使用,例如用于序列分类的两个序列,或用于问题回答的文本和问题。它还用作使用特殊令牌构建的序列的最后一个令牌。 -
sp_model_kwargs
(dict
, optional) — 将传递给SentencePieceProcessor.__init__()
方法。SentencePiece 的 Python 包装器 可以用于设置:-
enable_sampling
: 启用子词正则化。 -
nbest_size
: unigram 的采样参数。对于 BPE-Dropout 无效。-
nbest_size = {0,1}
: 不执行采样。 -
nbest_size > 1
: 从 nbest_size 结果中进行采样。 -
nbest_size < 0
: 假设 nbest_size 是无限的,并使用前向过滤和后向采样算法从所有假设(格)中进行采样。
-
-
alpha
: 用于 unigram 采样的平滑参数,以及用于 BPE-dropout 的合并操作的 dropout 概率。
-
构建一个 BertGeneration 分词器。基于SentencePiece。
该分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
save_vocabulary
<来源>
代码语言:javascript复制( save_directory: str filename_prefix: Optional = None )
BertGenerationEncoder
class transformers.BertGenerationEncoder
<来源>
代码语言:javascript复制( config )
参数
config
(BertGenerationConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 BertGeneration 模型变压器输出原始隐藏状态,没有特定的头部。
该模型继承自 PreTrainedModel。查看超类文档以获取库实现的所有模型的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
该模型可以作为编码器(仅具有自注意力)以及解码器行为,此时在自注意力层之间添加了一层交叉注意力,遵循Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser 和 Illia Polosukhin 在 Attention is all you need中描述的架构。
当利用 Bert 或 Roberta 检查点用于 EncoderDecoderModel 类时,应使用此模型,如 Sascha Rothe、Shashi Narayan 和 Aliaksei Severyn 在Leveraging Pre-trained Checkpoints for Sequence Generation Tasks中所述。
为了作为解码器行为,模型需要使用is_decoder
参数初始化为True
。要在 Seq2Seq 模型中使用,模型需要使用is_decoder
参数和add_cross_attention
参数都初始化为True
;然后期望一个encoder_hidden_states
作为前向传递的输入。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
()和 PreTrainedTokenizer.encode()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。在[0, 1]
中选择的掩码值:- 1 表示未被
屏蔽
的标记, - 0 表示被
屏蔽
的标记。
什么是注意力掩码?
- 1 表示未被
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记的位置在位置嵌入中的索引。在范围[0, config.max_position_embeddings - 1]
中选择。 什么是位置 ID? -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块的选定头部失效的掩码。在[0, 1]
中选择的掩码值:- 1 表示头部未被
屏蔽
, - 0 表示头部被
屏蔽
。
- 1 表示头部未被
-
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。 -
encoder_hidden_states
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。 -
encoder_attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。在[0, 1]
中选择的掩码值:对于未屏蔽的标记为1
,对于屏蔽的标记为0
。 -
past_key_values
(长度为config.n_layers
的tuple(tuple(torch.FloatTensor))
,每个元组包含形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的 4 个张量)— 包含注意力块的预计算键和值隐藏状态。可用于加速解码。 如果使用past_key_values
,用户可以选择仅输入最后的decoder_input_ids
(这些没有将其过去的键值状态提供给此模型的)的形状为(batch_size, 1)
的张量,而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。 -
use_cache
(bool
,可选)— 如果设置为True
,则返回past_key_values
键值状态,可用于加速解码(参见past_key_values
)。
返回
transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPastAndCrossAttentions 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(BertGenerationConfig)和输入的不同元素。
-
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
) — 模型最后一层的隐藏状态序列。 如果使用past_key_values
,则仅输出形状为(batch_size, 1, hidden_size)
的序列的最后一个隐藏状态。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, 可选, 当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的元组tuple(torch.FloatTensor)
,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,如果config.is_encoder_decoder=True
,还有 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块中的键和值,以及在交叉注意力块中,如果config.is_encoder_decoder=True
,还可以使用)可用于加速顺序解码的(请参见past_key_values
输入)。 -
hidden_states
(tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入输出的输出 每层的输出)。 模型在每一层输出的隐藏状态加上可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 自注意力头中注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
和config.add_cross_attention=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 后使用,用于计算交叉注意力头中的加权平均值。
BertGenerationEncoder 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, BertGenerationEncoder
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/bert_for_seq_generation_L-24_bbc_encoder")
>>> model = BertGenerationEncoder.from_pretrained("google/bert_for_seq_generation_L-24_bbc_encoder")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
BertGenerationDecoder
class transformers.BertGenerationDecoder
<来源>
代码语言:javascript复制( config )
参数
config
(BertGenerationConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
带有顶部语言建模
头部的 BertGeneration 模型,用于 CLM 微调。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以了解与一般使用和行为相关的所有事项。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None labels: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.CausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
()和 PreTrainedTokenizer.encode()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]
中:- 1 表示未被屏蔽的标记,
- 0 表示被屏蔽的标记。
什么是注意力掩码?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块的选定头部失效的掩码。选择的掩码值在[0, 1]
中:- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
-
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。 -
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。 -
encoder_hidden_states
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。 -
encoder_attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。选择的掩码值在[0, 1]
中:- 1 表示未被屏蔽的标记,
- 0 表示被屏蔽的标记。
-
labels
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算从左到右的语言建模损失(下一个词预测)的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩码),损失仅计算具有[0, ..., config.vocab_size]
标签的标记。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
,长度为config.n_layers
,每个元组包含形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的 4 个张量) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。 如果使用past_key_values
,用户可以选择仅输入形状为(batch_size, 1)
的最后decoder_input_ids
(那些没有将它们的过去键值状态提供给此模型的)而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。 -
use_cache
(bool
, optional) — 如果设置为True
,将返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。
返回
transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或torch.FloatTensor
元组
一个 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(BertGenerationConfig)和输入的各种元素。
-
loss
(torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 语言建模损失(用于下一个标记预测)。 -
logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出的输出 每层输出的输出)。 模型在每一层输出处的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在自注意力头中用于计算加权平均值的注意力 softmax 之后的注意力权重。 -
cross_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在交叉注意力头中用于计算加权平均值的交叉注意力 softmax 之后的注意力权重。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, optional, 当传递use_cache=True
或config.use_cache=True
时返回) — 包含config.n_layers
长度的torch.FloatTensor
元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态。仅在config.is_decoder = True
时相关。 包含预计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码。
BertGenerationDecoder 的前向方法覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, BertGenerationDecoder, BertGenerationConfig
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/bert_for_seq_generation_L-24_bbc_encoder")
>>> config = BertGenerationConfig.from_pretrained("google/bert_for_seq_generation_L-24_bbc_encoder")
>>> config.is_decoder = True
>>> model = BertGenerationDecoder.from_pretrained(
... "google/bert_for_seq_generation_L-24_bbc_encoder", config=config
... )
>>> inputs = tokenizer("Hello, my dog is cute", return_token_type_ids=False, return_tensors="pt")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.logits
BertJapanese
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/bert-japanese
概述
在日文文本上训练的 BERT 模型。
有两种不同的分词方法的模型:
- 使用 MeCab 和 WordPiece 进行标记化。这需要一些额外的依赖项,fugashi是MeCab的包装器。
- 将标记化为字符。
要使用MecabTokenizer,您应该pip install transformers["ja"]
(或者如果您从源代码安装,则应该pip install -e .["ja"]
)来安装依赖项。
请参阅cl-tohoku 存储库上的详细信息。
使用 MeCab 和 WordPiece 分词的模型的示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoModel, AutoTokenizer
>>> bertjapanese = AutoModel.from_pretrained("cl-tohoku/bert-base-japanese")
>>> tokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese")
>>> ## Input Japanese Text
>>> line = "吾輩は猫である。"
>>> inputs = tokenizer(line, return_tensors="pt")
>>> print(tokenizer.decode(inputs["input_ids"][0]))
[CLS] 吾輩 は 猫 で ある 。 [SEP]
>>> outputs = bertjapanese(**inputs)
使用字符分词的模型示例:
代码语言:javascript复制>>> bertjapanese = AutoModel.from_pretrained("cl-tohoku/bert-base-japanese-char")
>>> tokenizer = AutoTokenizer.from_pretrained("cl-tohoku/bert-base-japanese-char")
>>> ## Input Japanese Text
>>> line = "吾輩は猫である。"
>>> inputs = tokenizer(line, return_tensors="pt")
>>> print(tokenizer.decode(inputs["input_ids"][0]))
[CLS] 吾 輩 は 猫 で あ る 。 [SEP]
>>> outputs = bertjapanese(**inputs)
这个模型是由cl-tohoku贡献的。
这个实现与 BERT 相同,只是分词方法不同。有关 API 参考信息,请参考 BERT 文档。
BertJapaneseTokenizer
class transformers.BertJapaneseTokenizer
<来源>
代码语言:javascript复制( vocab_file spm_file = None do_lower_case = False do_word_tokenize = True do_subword_tokenize = True word_tokenizer_type = 'basic' subword_tokenizer_type = 'wordpiece' never_split = None unk_token = '[UNK]' sep_token = '[SEP]' pad_token = '[PAD]' cls_token = '[CLS]' mask_token = '[MASK]' mecab_kwargs = None sudachi_kwargs = None jumanpp_kwargs = None **kwargs )
参数
-
vocab_file
(str
) — 指向一个每行一个 wordpiece 的词汇文件的路径。 -
spm_file
(str
, 可选) — 指向包含词汇表的SentencePiece文件的路径(通常具有.spm 或.model 扩展名)。 -
do_lower_case
(bool
, 可选, 默认为True
) — 是否将输入转换为小写。仅在 do_basic_tokenize=True 时有效。 -
do_word_tokenize
(bool
, 可选, 默认为True
) — 是否进行词分词。 -
do_subword_tokenize
(bool
, 可选, 默认为True
) — 是否进行子词分词。 -
word_tokenizer_type
(str
, 可选, 默认为"basic"
) — 词分词器的类型。可选择从["basic"
, “mecab”, “sudachi”, “jumanpp”]中选择。 -
subword_tokenizer_type
(str
, 可选, 默认为"wordpiece"
) — 子词分词器的类型。可选择从["wordpiece"
, “character”, “sentencepiece”]中选择。 -
mecab_kwargs
(dict
, 可选) — 传递给MecabTokenizer
构造函数的字典。 -
sudachi_kwargs
(dict
, 可选) — 传递给SudachiTokenizer
构造函数的字典。 -
jumanpp_kwargs
(dict
, 可选) — 传递给JumanppTokenizer
构造函数的字典。
为日文文本构建一个 BERT 分词器。
这个分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考:这个超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表,将添加特殊标记。 -
token_ids_1
(List[int]
, 可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
包含适当特殊标记的输入 ID 列表。
通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。BERT 序列的格式如下:
- 单个序列:
[CLS] X [SEP]
- 序列对:
[CLS] A [SEP] B [SEP]
convert_tokens_to_string
<来源>
代码语言:javascript复制( tokens )
将一系列标记(字符串)转换为单个字符串。
create_token_type_ids_from_sequences
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表。 -
token_ids_1
(List[int]
, 可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
根据给定序列的标记类型 ID 列表。
从传递的两个序列中创建一个用于序列对分类任务的掩码。一个 BERT 序列
序列掩码的格式如下:
代码语言:javascript复制0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence | second sequence |
如果token_ids_1
为None
,则此方法仅返回掩码的第一部分(0)。
get_special_tokens_mask
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表。 -
token_ids_1
(List[int]
, 可选) — 序列对的可选第二个 ID 列表。 -
already_has_special_tokens
(bool
, 可选,默认为False
) — 标记列表是否已经使用特殊标记格式化。
返回
List[int]
一个整数列表,范围在[0, 1]之间:1 表示特殊标记,0 表示序列标记。
从没有添加特殊标记的标记列表中检索序列 ID。当使用分词器prepare_for_model
方法添加特殊标记时调用此方法。
BERTweet
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/bertweet
概述
BERTweet 模型是由 Dat Quoc Nguyen、Thanh Vu 和 Anh Tuan Nguyen 在BERTweet: A pre-trained language model for English Tweets中提出的。
从论文中摘录如下:
我们提出了 BERTweet,这是第一个用于英文推文的公开大规模预训练语言模型。我们的 BERTweet 与 BERT-base(Devlin 等人,2019)具有相同的架构,使用 RoBERTa 预训练过程进行训练(Liu 等人,2019)。实验表明,BERTweet 优于强基线 RoBERTa-base 和 XLM-R-base(Conneau 等人,2020),在三个推文 NLP 任务(词性标注、命名实体识别和文本分类)上产生比先前最先进模型更好的性能结果。
此模型由dqnguyen贡献。原始代码可在此处找到。
用法示例
代码语言:javascript复制>>> import torch
>>> from transformers import AutoModel, AutoTokenizer
>>> bertweet = AutoModel.from_pretrained("vinai/bertweet-base")
>>> # For transformers v4.x :
>>> tokenizer = AutoTokenizer.from_pretrained("vinai/bertweet-base", use_fast=False)
>>> # For transformers v3.x:
>>> # tokenizer = AutoTokenizer.from_pretrained("vinai/bertweet-base")
>>> # INPUT TWEET IS ALREADY NORMALIZED!
>>> line = "SC has first two presumptive cases of coronavirus , DHEC confirms HTTPURL via @USER :cry:"
>>> input_ids = torch.tensor([tokenizer.encode(line)])
>>> with torch.no_grad():
... features = bertweet(input_ids) # Models outputs are now tuples
>>> # With TensorFlow 2.0 :
>>> # from transformers import TFAutoModel
>>> # bertweet = TFAutoModel.from_pretrained("vinai/bertweet-base")
此实现与 BERT 相同,仅在分词方法上有所不同。有关 API 参考信息,请参考 BERT 文档。
BertweetTokenizer
class transformers.BertweetTokenizer
<来源>
代码语言:javascript复制( vocab_file merges_file normalization = False bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' **kwargs )
参数
-
vocab_file
(str
) — 词汇文件的路径。 -
merges_file
(str
) — 合并文件的路径。 -
normalization
(bool
, optional, defaults toFalse
) — 是否应用规范化预处理。 -
bos_token
(str
, optional, defaults to"<s>"
) — 在预训练期间使用的序列开始标记。可用作序列分类器标记。 在使用特殊标记构建序列时,这不是用于序列开头的标记。使用的标记是cls_token
。 -
eos_token
(str
, optional, defaults to"</s>"
) — 序列结束标记。 在使用特殊标记构建序列时,这不是用于序列结束的标记。使用的标记是sep_token
。 -
sep_token
(str
, optional, defaults to"</s>"
) — 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于问题回答的文本和问题。它还用作使用特殊标记构建的序列的最后一个标记。 -
cls_token
(str
, optional, defaults to"<s>"
) — 用于进行序列分类时使用的分类器标记(对整个序列进行分类而不是每个标记进行分类)。在使用特殊标记构建时,它是序列的第一个标记。 -
unk_token
(str
, optional, defaults to"<unk>"
) — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。 -
pad_token
(str
, optional, defaults to"<pad>"
) — 用于填充的标记,例如在批处理不同长度的序列时使用。 -
mask_token
(str
, optional, defaults to"<mask>"
) — 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
构建一个使用字节对编码的 BERTweet 分词器。
此分词器继承自 PreTrainedTokenizer,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。
add_from_file
<来源>
代码语言:javascript复制( f )
从文本文件加载预先存在的字典,并将其符号添加到此实例。
build_inputs_with_special_tokens
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
)— 要添加特殊标记的 ID 列表。 -
token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
带有适当特殊标记的 input IDs 列表。
从序列或序列对构建用于序列分类任务的模型输入,通过连接和添加特殊标记。BERTweet 序列的格式如下:
- 单个序列:
<s> X </s>
- 序列对:
<s> A </s></s> B </s>
convert_tokens_to_string
<来源>
代码语言:javascript复制( tokens )
将一系列标记(字符串)转换为单个字符串。
create_token_type_ids_from_sequences
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
)— ID 列表。 -
token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。
返回
List[int]
零列表。
从传递的两个序列创建一个用于序列对分类任务的掩码。BERTweet 不使用标记类型 ID,因此返回一个零列表。
get_special_tokens_mask
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
)— ID 列表。 -
token_ids_1
(List[int]
,可选)— 序列对的可选第二个 ID 列表。 -
already_has_special_tokens
(bool
,可选,默认为False
)— 标记列表是否已经使用特殊标记格式化。
返回
List[int]
一个整数列表,范围为[0, 1]:1 表示特殊标记,0 表示序列标记。
从没有添加特殊标记的标记列表中检索序列 ID。在使用分词器prepare_for_model
方法添加特殊标记时调用此方法。
normalizeToken
<来源>
代码语言:javascript复制( token )
规范化推文中的标记
normalizeTweet
<来源>
代码语言:javascript复制( tweet )
规范化原始推文
BigBird
原文:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/big_bird
概述
BigBird 模型是由 Zaheer, Manzil 和 Guruganesh, Guru 和 Dubey, Kumar Avinava 和 Ainslie, Joshua 和 Alberti, Chris 和 Ontanon, Santiago 和 Pham, Philip 和 Ravula, Anirudh 和 Wang, Qifan 和 Yang, Li 等人在Big Bird: Transformers for Longer Sequences中提出的。BigBird 是一种基于稀疏注意力的变压器,它将基于 Transformer 的模型(如 BERT)扩展到更长的序列。除了稀疏注意力,BigBird 还将全局注意力以及随机注意力应用于输入序列。从理论上讲,已经证明应用稀疏、全局和随机注意力可以逼近完全注意力,同时对于更长的序列而言在计算上更加高效。由于具有处理更长上下文的能力,BigBird 在各种长文档 NLP 任务(如问答和摘要)上表现出比 BERT 或 RoBERTa 更好的性能。
论文摘要如下:
基于 Transformer 的模型,如 BERT,一直是自然语言处理中最成功的深度学习模型之一。不幸的是,它们的一个核心限制是由于完全注意机制导致的对序列长度的二次依赖(主要是在内存方面)。为了解决这个问题,我们提出了 BigBird,一种稀疏注意机制,将这种二次依赖降低到线性。我们展示了 BigBird 是序列函数的通用逼近器,并且是图灵完备的,从而保留了二次完全注意模型的这些属性。在此过程中,我们的理论分析揭示了具有 O(1)全局标记(如 CLS)的一些好处,这些标记作为稀疏注意机制的一部分关注整个序列。提出的稀疏注意机制可以处理比以前使用类似硬件可能的长度多 8 倍的序列。由于具有处理更长上下文的能力,BigBird 在各种 NLP 任务(如问答和摘要)上显着提高了性能。我们还提出了对基因组数据的新颖应用。
此模型由vasudevgupta贡献。原始代码可以在这里找到。
使用提示
- 有关 BigBird 注意力工作的详细解释,请参阅此博客文章。
- BigBird 有两种实现:original_full和block_sparse。对于序列长度<1024,建议使用original_full,因为使用block_sparse注意力没有好处。
- 当前代码使用 3 个块和 2 个全局块的窗口大小。
- 序列长度必须能够被块大小整除。
- 当前实现仅支持ITC。
- 当前实现不支持num_random_blocks = 0
- BigBird 是一个具有绝对位置嵌入的模型,因此通常建议在右侧而不是左侧填充输入。
资源
- 文本分类任务指南
- 标记分类任务指南
- 问答任务指南
- 因果语言建模任务指南
- 掩码语言建模任务指南
- 多项选择任务指南
BigBirdConfig
class transformers.BigBirdConfig
<来源>
代码语言:javascript复制( vocab_size = 50358 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu_new' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 4096 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-12 use_cache = True pad_token_id = 0 bos_token_id = 1 eos_token_id = 2 sep_token_id = 66 attention_type = 'block_sparse' use_bias = True rescale_embeddings = False block_size = 64 num_random_blocks = 3 classifier_dropout = None **kwargs )
参数
-
vocab_size
(int
, optional, defaults to 50358) — BigBird 模型的词汇表大小。定义了在调用 BigBirdModel 时可以表示的不同标记数量。 -
hidden_size
(int
, optional, defaults to 768) — 编码器层和池化器层的维度。 -
num_hidden_layers
(int
, optional, defaults to 12) — Transformer 编码器中的隐藏层数。 -
num_attention_heads
(int
, optional, defaults to 12) — Transformer 编码器中每个注意力层的注意力头数。 -
intermediate_size
(int
, optional, defaults to 3072) — Transformer 编码器中“中间”(即前馈)层的维度。 -
hidden_act
(str
orfunction
, optional, defaults to"gelu_new"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。 -
hidden_dropout_prob
(float
, optional, defaults to 0.1) — 嵌入、编码器和池化器中所有全连接层的 dropout 概率。 -
attention_probs_dropout_prob
(float
, optional, defaults to 0.1) — 注意力概率的 dropout 比率。 -
max_position_embeddings
(int
, optional, defaults to 4096) — 此模型可能使用的最大序列长度。通常设置为较大的值以防万一(例如,1024、2048 或 4096)。 -
type_vocab_size
(int
, optional, defaults to 2) — 在调用 BigBirdModel 时传递的token_type_ids
的词汇表大小。 -
initializer_range
(float
, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。 -
layer_norm_eps
(float
, optional, defaults to 1e-12) — 层归一化层使用的 epsilon。 -
is_decoder
(bool
, optional, defaults toFalse
) — 模型是否用作解码器。如果为False
,则模型用作编码器。 -
use_cache
(bool
, optional, defaults toTrue
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅在config.is_decoder=True
时相关。 -
attention_type
(str
, optional, defaults to"block_sparse"
) — 是否使用在论文中介绍的块稀疏注意力(具有 n 复杂度)或原始注意力层(具有 n² 复杂度)。可能的值为"original_full"
和"block_sparse"
。 -
use_bias
(bool
, optional, defaults toTrue
) — 是否在查询、键、值中使用偏置。 -
rescale_embeddings
(bool
, optional, defaults toFalse
) — 是否使用 (hidden_size ** 0.5) 重新缩放嵌入。 -
block_size
(int
, optional, defaults to 64) — 每个块的大小。仅在attention_type == "block_sparse"
时有用。 -
num_random_blocks
(int
, optional, defaults to 3) — 每个查询将关注这么多个随机块。仅在attention_type == "block_sparse"
时有用。 -
classifier_dropout
(float
, optional) — 分类头部的 dropout 比率。
这是一个配置类,用于存储 BigBirdModel 的配置。根据指定的参数实例化一个 BigBird 模型,定义模型架构。使用默认值实例化配置将产生类似于 BigBird google/bigbird-roberta-base 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
代码语言:javascript复制>>> from transformers import BigBirdConfig, BigBirdModel
>>> # Initializing a BigBird google/bigbird-roberta-base style configuration
>>> configuration = BigBirdConfig()
>>> # Initializing a model (with random weights) from the google/bigbird-roberta-base style configuration
>>> model = BigBirdModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
BigBirdTokenizer
class transformers.BigBirdTokenizer
< source >
代码语言:javascript复制( vocab_file unk_token = '<unk>' bos_token = '<s>' eos_token = '</s>' pad_token = '<pad>' sep_token = '[SEP]' mask_token = '[MASK]' cls_token = '[CLS]' sp_model_kwargs: Optional = None **kwargs )
参数
-
vocab_file
(str
) — 包含实例化分词器所需词汇表的SentencePiece文件(通常具有*.spm*扩展名)。 -
unk_token
(str
, 可选, 默认为"<unk>"
) — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。 -
bos_token
(str
, 可选, 默认为"<s>"
) — 序列开始标记。 -
eos_token
(str
, 可选, 默认为"</s>"
) — 序列结束标记。 -
pad_token
(str
, 可选, 默认为"<pad>"
) — 用于填充的标记,例如在批处理不同长度的序列时使用。 -
sep_token
(str
, 可选, 默认为"[SEP]"
) — 分隔符标记,在构建来自多个序列的序列时使用,例如用于序列分类的两个序列或用于文本和问题的问题回答。它也用作带有特殊标记的序列的最后一个标记。 -
mask_token
(str
, 可选, 默认为"[MASK]"
) — 用于屏蔽值的标记。这是在使用屏蔽语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。 -
cls_token
(str
, 可选, 默认为"[CLS]"
) — 分类器标记,用于进行序列分类(对整个序列进行分类,而不是每个标记进行分类)。在构建带有特殊标记的序列时,它是序列的第一个标记。 -
sp_model_kwargs
(dict
, 可选) — 将传递给SentencePieceProcessor.__init__()
方法。SentencePiece 的 Python 包装器可用于设置:-
enable_sampling
: 启用子词正则化。 -
nbest_size
: unigram 的抽样参数。对于 BPE-Dropout 无效。-
nbest_size = {0,1}
: 不执行抽样。 -
nbest_size > 1
: 从 nbest_size 结果中抽样。 -
nbest_size < 0
: 假设 nbest_size 为无限,并使用前向过滤和后向抽样算法从所有假设(格)中抽样。
-
-
alpha
: 用于 unigram 抽样的平滑参数,以及 BPE-dropout 的合并操作的丢弃概率。
-
构建一个 BigBird 分词器。基于SentencePiece。
这个分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考这个超类以获取有关这些方法的更多信息。
build_inputs_with_special_tokens
< source >
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — 将添加特殊标记的 ID 列表。 -
token_ids_1
(List[int]
, 可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
具有适当特殊标记的输入 ID 列表。
通过连接和添加特殊标记,为序列分类任务构建模型输入的序列或序列对。Big Bird 序列的格式如下:
- 单个序列:
[CLS] X [SEP]
- 序列对:
[CLS] A [SEP] B [SEP]
get_special_tokens_mask
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表。 -
token_ids_1
(List[int]
, optional) — 序列对的可选第二个 ID 列表。 -
already_has_special_tokens
(bool
, optional, defaults toFalse
) — 标记列表是否已经使用特殊标记格式化为模型。
返回
List[int]
一个整数列表,范围为 [0, 1]:1 表示特殊标记,0 表示序列标记。
从没有添加特殊标记的标记列表中检索序列 ID。在使用分词器 prepare_for_model
方法添加特殊标记时调用此方法。
create_token_type_ids_from_sequences
<来源>
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表。 -
token_ids_1
(List[int]
, optional) — 序列对的可选第二个 ID 列表。
返回
List[int]
根据给定序列的 标记类型 ID 列表。
从传递的两个序列创建一个用于序列对分类任务的掩码。BERT 序列对掩码的格式如下: :: 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 | 第一个序列 | 第二个序列 | 如果 token_ids_1
是 None
,则此方法仅返回掩码的第一部分(0)。
save_vocabulary
<来源>
代码语言:javascript复制( save_directory: str filename_prefix: Optional = None )
BigBirdTokenizerFast
class transformers.BigBirdTokenizerFast
<来源>
代码语言:javascript复制( vocab_file = None tokenizer_file = None unk_token = '<unk>' bos_token = '<s>' eos_token = '</s>' pad_token = '<pad>' sep_token = '[SEP]' mask_token = '[MASK]' cls_token = '[CLS]' **kwargs )
参数
-
vocab_file
(str
) — 包含实例化分词器所需词汇表的 SentencePiece 文件(通常具有 .spm 扩展名)。 -
bos_token
(str
, optional, defaults to"<s>"
) — 在预训练期间使用的序列开头标记。可用作序列分类器标记。 在使用特殊标记构建序列时,这不是用于序列开头的标记。使用的标记是cls_token
。 -
eos_token
(str
, optional, defaults to"</s>"
) — 序列结束标记。… 注意:: 在使用特殊标记构建序列时,这不是用于序列结束的标记。使用的标记是sep_token
。 -
unk_token
(str
, optional, defaults to"<unk>"
) — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。 -
sep_token
(str
, optional, defaults to"[SEP]"
) — 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于文本和问题的问题回答。它也用作使用特殊标记构建的序列的最后一个标记。 -
pad_token
(str
, optional, defaults to"<pad>"
) — 用于填充的标记,例如在批处理不同长度的序列时使用。 -
cls_token
(str
, optional, defaults to"[CLS]"
) — 在进行序列分类(整个序列而不是每个标记的分类)时使用的分类器标记。在使用特殊标记构建序列时,它是序列的第一个标记。 -
mask_token
(str
, optional, defaults to"[MASK]"
) — 用于屏蔽值的标记。在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
构建一个“快速” BigBird 分词器(由 HuggingFace 的 tokenizers 库支持)。基于 Unigram。此分词器继承自 PreTrainedTokenizerFast,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息
build_inputs_with_special_tokens
< source >
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — 将添加特殊标记的 ID 列表 -
token_ids_1
(List[int]
,可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
具有适当特殊标记的 input IDs 列表。
通过连接和添加特殊标记,为序列分类任务构建一个序列或序列对的模型输入。一个 BigBird 序列具有以下格式:
- 单个序列:
[CLS] X [SEP]
- 序列对:
[CLS] A [SEP] B [SEP]
create_token_type_ids_from_sequences
< source >
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表。 -
token_ids_1
(List[int]
,可选) — 序列对的可选第二个 ID 列表。
返回
List[int]
根据给定序列的 token type IDs 列表。
从传递的两个序列创建一个用于序列对分类任务的掩码。一个 ALBERT
序列对掩码的格式如下:
代码语言:javascript复制0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
| first sequence | second sequence |
如果 token_ids_1
为 None,则仅返回掩码的第一部分(0)。
get_special_tokens_mask
< source >
代码语言:javascript复制( token_ids_0: List token_ids_1: Optional = None already_has_special_tokens: bool = False ) → export const metadata = 'undefined';List[int]
参数
-
token_ids_0
(List[int]
) — ID 列表。 -
token_ids_1
(List[int]
,可选) — 序列对的可选第二个 ID 列表。 -
already_has_special_tokens
(bool
,可选,默认为False
) — 如果标记列表已经为模型格式化了特殊标记,则设置为 True
返回
List[int]
一个整数列表,范围为 [0, 1]:1 表示特殊标记,0 表示序列标记。
从没有添加特殊标记的标记列表中检索序列 ID。在使用 tokenizer 的 prepare_for_model
方法添加特殊标记时调用此方法。
BigBird 特定输出
class transformers.models.big_bird.modeling_big_bird.BigBirdForPreTrainingOutput
< source >
代码语言:javascript复制( loss: Optional = None prediction_logits: FloatTensor = None seq_relationship_logits: FloatTensor = None hidden_states: Optional = None attentions: Optional = None )
参数
-
loss
(可选,当提供labels
时返回,形状为(1,)
的torch.FloatTensor
) — 作为被屏蔽的语言建模损失和下一个序列预测(分类)损失之和的总损失。 -
prediction_logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头部的预测分数(SoftMax 之前每个词汇标记的分数)。 -
seq_relationship_logits
(torch.FloatTensor
of shape(batch_size, 2)
) — 下一个序列预测(分类)头部的预测分数(在 SoftMax 之前的 True/False 连续性分数)。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 一个用于每个层的输出)。 每个层输出的模型隐藏状态加上初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
BigBirdForPreTraining 的输出类型。
PytorchHide Pytorch 内容
BigBirdModel
class transformers.BigBirdModel
< source >
代码语言:javascript复制( config add_pooling_layer = True )
参数
config
(BigBirdConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
裸的 BigBird 模型变压器输出原始隐藏状态,没有特定的头部。该模型是 PyTorch torch.nn.Module 的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有信息。
该模型可以作为编码器(仅具有自注意力)或解码器运行,此时在自注意力层之间添加了一个交叉注意力层,遵循 Attention is all you need 中描述的架构,作者为 Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser 和 Illia Polosukhin。
要作为解码器运行,模型需要使用配置中的 is_decoder
参数设置为 True
进行初始化。要在 Seq2Seq 模型中使用,模型需要使用 is_decoder
参数和 add_cross_attention
都设置为 True
进行初始化;然后预期将 encoder_hidden_states
作为输入传递。
forward
< source >
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:- 1 代表未被“masked”的标记,
- 0 代表被
masked
的标记。
什么是注意力掩码?
-
token_type_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
中:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
什么是标记类型 ID?
-
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 什么是位置 ID? -
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选取在[0, 1]
:- 1 表示头部
未被掩码
, - 0 表示头部
被掩码
。
- 1 表示头部
-
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 可选地,可以直接传递嵌入表示而不是传递input_ids
。如果要更好地控制如何将input_ids索引转换为相关向量,这很有用,而不是使用模型的内部嵌入查找矩阵。 -
output_attentions
(bool
,optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
,optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。 -
encoder_hidden_states
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。 -
encoder_attention_mask
(torch.FloatTensor
,形状为(batch_size, sequence_length)
,optional) — 用于避免对编码器输入的填充标记索引执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用。掩码值选取在[0, 1]
:- 1 表示标记
未被掩码
。 - 0 表示
被掩码
的标记。
- 1 表示标记
-
past_key_values
(tuple(tuple(torch.FloatTensor))
,长度为config.n_layers
,每个元组包含 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的张量) — 包含注意力块的预计算的键和值隐藏状态。可用于加速解码。如果使用past_key_values
,用户可以选择仅输入最后的decoder_input_ids
(那些没有将其过去的键值状态提供给该模型的)的形状为(batch_size, 1)
,而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。 -
use_cache
(bool
, optional) — 如果设置为True
,则返回past_key_values
键值状态,可用于加速解码(参见past_key_values
)。
返回
transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时)包含各种元素,取决于配置(BigBirdConfig)和输入。
-
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
pooler_output
(torch.FloatTensor
,形状为(batch_size, hidden_size)
) — 经过辅助预训练任务的层进一步处理后的序列第一个标记(分类标记)的最后一层隐藏状态。例如,对于 BERT 系列模型,这返回经过线性层和 tanh 激活函数处理后的分类标记。线性层权重是在预训练期间从下一个句子预测(分类)目标中训练的。 -
hidden_states
(tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或者config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则包括嵌入层的输出和每一层的输出)。 模型在每一层输出的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或者config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
和config.add_cross_attention=True
或者config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, 可选, 当传递use_cache=True
或者config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,如果config.is_encoder_decoder=True
,还有 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块中的键和值,以及在交叉注意力块中,如果config.is_encoder_decoder=True
,还可以包含)可用于加速顺序解码的(见past_key_values
输入)。
BigBirdModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是直接调用此函数,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, BigBirdModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = BigBirdModel.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
BigBirdForPreTraining
class transformers.BigBirdForPreTraining
<来源>
代码语言:javascript复制( config )
forward
<来源>
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None next_sentence_label: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.big_bird.modeling_big_bird.BigBirdForPreTrainingOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)的 torch.LongTensor
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)的 torch.FloatTensor
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 对于未被
masked
的标记为 1。 - 对于被
masked
的标记为 0。
什么是注意力掩码?
- 对于未被
-
token_type_ids
(形状为(batch_size, sequence_length)的 torch.LongTensor
,可选) — 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于句子 A的标记,
- 1 对应于句子 B的标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块的选定头部无效的掩码。选择的掩码值在[0, 1]
内:- 1 表示头部未被
掩码
, - 0 表示头部被
掩码
。
- 1 表示头部未被
-
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids索引转换为相关向量,这将很有用,而不是使用模型的内部嵌入查找矩阵。 -
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回一个 ModelOutput 而不是一个普通的元组。 -
labels
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
内(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩码),损失仅计算具有标签在[0, ..., config.vocab_size]
内的标记。 -
next_sentence_label
(形状为(batch_size,)
的torch.LongTensor
,可选)— 用于计算下一个序列预测(分类)损失的标签。如果指定,nsp 损失将添加到 masked_lm 损失中。输入应为一个序列对(参见input_ids
文档字符串)。索引应在[0, 1]
内:- 0 表示序列 B 是序列 A 的延续,
- 1 表示序列 B 是一个随机序列。
-
kwargs
(Dict[str, any]
,可选,默认为*{}*)— 用于隐藏已弃用的旧参数的参数。
返回
transformers.models.big_bird.modeling_big_bird.BigBirdForPreTrainingOutput 或者tuple(torch.FloatTensor)
一个 transformers.models.big_bird.modeling_big_bird.BigBirdForPreTrainingOutput 或者一个torch.FloatTensor
的元组(如果传递了return_dict=False
或者config.return_dict=False
时)包含不同的元素,取决于配置(BigBirdConfig)和输入。
-
loss
(可选,当提供labels
时返回,形状为(1,)
的torch.FloatTensor
)— 总损失,作为掩码语言建模损失和下一个序列预测(分类)损失的总和。 -
prediction_logits
(形状为(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
)— 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
seq_relationship_logits
(形状为(batch_size, 2)
的torch.FloatTensor
)— 下一个序列预测(分类)头的预测分数(SoftMax 之前的 True/False 连续分数)。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)—形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 一个用于每个层的输出)。 模型在每一层的输出的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)—形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 在自注意力头中用于计算加权平均值的注意力 softmax 后的注意力权重。
BigBirdForPreTraining 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的方法需要在这个函数内定义,但应该在之后调用Module
实例,而不是这个函数,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, BigBirdForPreTraining
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = BigBirdForPreTraining.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.prediction_logits
>>> seq_relationship_logits = outputs.seq_relationship_logits
BigBirdForCausalLM
class transformers.BigBirdForCausalLM
<来源>
代码语言:javascript复制( config )
参数
config
(BigBirdConfig)—模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
BigBird 模型在顶部有一个用于 CLM 微调的语言建模
头。这个模型是 PyTorch 的torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有信息。
forward
<来源>
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None past_key_values: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.CausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)—词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)—用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 表示未被
masked
的标记, - 0 表示被
masked
的标记。
什么是注意力掩码?
- 1 表示未被
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)—段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于句子 A标记,
- 1 对应于句子 B标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)—每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 什么是位置 ID? -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将 input_ids 索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。 -
encoder_hidden_states
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则用于交叉注意力。 -
encoder_attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则此掩码将用于交叉注意力。掩码值在[0, 1]
中选择:- 1 表示未被
masked
的标记, - 0 表示被
masked
的标记。
- 1 表示未被
-
past_key_values
(tuple(tuple(torch.FloatTensor))
,长度为config.n_layers
,每个元组有 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的张量) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。如果使用了past_key_values
,用户可以选择仅输入最后一个decoder_input_ids
(那些没有将其过去的键值状态提供给此模型的)的形状为(batch_size, 1)
的张量,而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 -
labels
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算从左到右的语言建模损失(下一个单词预测)的标签。索引应在[-100, 0, ..., config.vocab_size]
中(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(masked),损失仅计算具有标签 n[0, ..., config.vocab_size]
的标记。 -
use_cache
(bool
, optional) — 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。
返回
transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入的不同元素。
-
loss
(torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 语言建模损失(用于下一个标记预测)。 -
logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头部的预测分数(SoftMax 前每个词汇标记的分数)。 -
hidden_states
(tuple(torch.FloatTensor)
, 可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入输出的一个 每层输出的一个)。 模型在每一层输出的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, 可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在自注意力头中用于计算加权平均值的注意力 softmax 后的注意力权重。 -
cross_attentions
(tuple(torch.FloatTensor)
, 可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在交叉注意力头中用于计算加权平均值的注意力 softmax 后的交叉注意力权重。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, 可选,当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的torch.FloatTensor
元组的元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态。仅在config.is_decoder = True
时相关。 包含预先计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码的(见past_key_values
输入)。
BigBirdForCausalLM 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, BigBirdForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = BigBirdForCausalLM.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> loss = outputs.loss
>>> logits = outputs.logits
BigBirdForMaskedLM
class transformers.BigBirdForMaskedLM
<来源>
代码语言:javascript复制( config )
参数
config
(BigBirdConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
BigBird 模型在顶部带有语言建模
头。此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MaskedLMOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 代表未被
masked
的标记, - 0 代表被
masked
的标记。
什么是注意力掩码?
- 1 代表未被
-
token_type_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 段标记索引,指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A 标记,
- 1 对应于 sentence B 标记。
什么是标记类型 ID?
-
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 什么是位置 ID? -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望更多地控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量中的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量中的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。 -
labels
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(参见input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩码),损失仅计算具有标签在[0, ..., config.vocab_size]
范围内的标记。
返回
transformers.modeling_outputs.MaskedLMOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.MaskedLMOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含各种元素,具体取决于配置(BigBirdConfig)和输入。
-
loss
(torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 掩码语言建模(MLM)损失。 -
logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头部的预测分数(SoftMax 之前每个词汇标记的分数)。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型具有嵌入层,则为嵌入的输出 每层的输出)。 模型在每一层输出的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
BigBirdForMaskedLM 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, BigBirdForMaskedLM
>>> from datasets import load_dataset
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = BigBirdForMaskedLM.from_pretrained("google/bigbird-roberta-base")
>>> squad_ds = load_dataset("squad_v2", split="train")
>>> # select random long article
>>> LONG_ARTICLE_TARGET = squad_ds[81514]["context"]
>>> # select random sentence
>>> LONG_ARTICLE_TARGET[332:398]
'the highest values are very close to the theoretical maximum value'
>>> # add mask_token
>>> LONG_ARTICLE_TO_MASK = LONG_ARTICLE_TARGET.replace("maximum", "[MASK]")
>>> inputs = tokenizer(LONG_ARTICLE_TO_MASK, return_tensors="pt")
>>> # long article input
>>> list(inputs["input_ids"].shape)
[1, 919]
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> # retrieve index of [MASK]
>>> mask_token_index = (inputs.input_ids == tokenizer.mask_token_id)[0].nonzero(as_tuple=True)[0]
>>> predicted_token_id = logits[0, mask_token_index].argmax(axis=-1)
>>> tokenizer.decode(predicted_token_id)
'maximum'
代码语言:javascript复制>>> labels = tokenizer(LONG_ARTICLE_TARGET, return_tensors="pt")["input_ids"]
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)
>>> outputs = model(**inputs, labels=labels)
>>> round(outputs.loss.item(), 2)
1.99
BigBirdForSequenceClassification
class transformers.BigBirdForSequenceClassification
<来源>
代码语言:javascript复制( config )
参数
config
(BigBirdConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
BigBird 模型变压器,顶部带有一个序列分类/回归头(在汇总输出的顶部是一个线性层),例如用于 GLUE 任务。
这个模型是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。
forward
<来源>
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.SequenceClassifierOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 什么是输入 ID? -
attention_mask
(torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:- 1 表示
未被掩码
的标记, - 0 表示
被掩码
的标记。
什么是注意力掩码?
- 1 表示
-
token_type_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 指示输入的第一部分和第二部分的段标记索引。索引选择在[0, 1]
中:- 0 对应于一个句子 A标记,
- 1 对应于一个句子 B标记。
什么是标记类型 ID?
-
position_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块的选定头部失效的掩码。掩码值选择在[0, 1]
中:- 1 表示头部
未被掩码
, - 0 表示头部
被掩码
。
- 1 表示头部
-
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 可选地,可以直接传递嵌入表示而不是传递input_ids
。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。 -
return_dict
(bool
,optional) — 是否返回 ModelOutput 而不是普通元组。 -
labels
(torch.LongTensor
,形状为(batch_size,)
,optional) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels == 1
,则计算回归损失(均方损失),如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回
transformers.modeling_outputs.SequenceClassifierOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.SequenceClassifierOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入的不同元素。
-
loss
(torch.FloatTensor
,形状为(1,)
,optional,当提供labels
时返回) — 分类(如果config.num_labels==1
则为回归)损失。 -
logits
(torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — 分类(如果config.num_labels==1
则为回归)得分(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入输出的输出 每层的输出)。 模型在每一层输出处的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
BigBirdForSequenceClassification 前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, BigBirdForSequenceClassification
>>> from datasets import load_dataset
>>> tokenizer = AutoTokenizer.from_pretrained("l-yohai/bigbird-roberta-base-mnli")
>>> model = BigBirdForSequenceClassification.from_pretrained("l-yohai/bigbird-roberta-base-mnli")
>>> squad_ds = load_dataset("squad_v2", split="train")
>>> LONG_ARTICLE = squad_ds[81514]["context"]
>>> inputs = tokenizer(LONG_ARTICLE, return_tensors="pt")
>>> # long input article
>>> list(inputs["input_ids"].shape)
[1, 919]
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
'LABEL_0'
代码语言:javascript复制>>> num_labels = len(model.config.id2label)
>>> model = BigBirdForSequenceClassification.from_pretrained(
... "l-yohai/bigbird-roberta-base-mnli", num_labels=num_labels
... )
>>> labels = torch.tensor(1)
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
1.13
BigBirdForMultipleChoice
class transformers.BigBirdForMultipleChoice
< source >
代码语言:javascript复制( config )
参数
config
(BigBirdConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
BigBird 模型,顶部带有一个多选分类头(一个线性层位于池化输出之上,然后是 softmax),例如用于 RocStories/SWAG 任务。
此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MultipleChoiceModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, num_choices, sequence_length)
) — 词汇表中输入序列 token 的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 IDs? -
attention_mask
(torch.FloatTensor
,形状为(batch_size, num_choices, sequence_length)
,optional) — 用于避免在填充 token 索引上执行注意力的遮罩。遮罩值在[0, 1]
中选择:- 1 表示未被遮蔽的 token,
- 0 表示被遮蔽的 token。
什么是注意力遮罩?
-
token_type_ids
(torch.LongTensor
,形状为(batch_size, num_choices, sequence_length)
,optional) — 分段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于句子 A的 token,
- 1 对应于句子 B的 token。
什么是 token type IDs?
-
position_ids
(torch.LongTensor
,形状为(batch_size, num_choices, sequence_length)
,optional) — 每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 什么是位置 ID? -
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,optional) — 用于使自注意力模块的选定头部失效的遮罩。遮罩值在[0, 1]
中选择:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
-
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, num_choices, sequence_length, hidden_size)
,optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将很有用。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。 -
labels
(torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算多项选择分类损失的标签。索引应在[0, ..., num_choices-1]
范围内,其中num_choices
是输入张量的第二维的大小。(参见上面的input_ids
)
返回
transformers.modeling_outputs.MultipleChoiceModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.MultipleChoiceModelOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含根据配置(BigBirdConfig)和输入的各种元素。
-
loss
(torch.FloatTensor
,形状为 (1,),可选,当提供了labels
时返回) — 分类损失。 -
logits
(torch.FloatTensor
,形状为(batch_size, num_choices)
) — num_choices 是输入张量的第二维的大小。(参见上面的 input_ids)。 分类得分(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递了output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入输出的输出 每层的输出)。 模型在每一层输出的隐藏状态加上可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
,可选,当传递了output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
BigBirdForMultipleChoice 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, BigBirdForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = BigBirdForMultipleChoice.from_pretrained("google/bigbird-roberta-base")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0) # choice0 is correct (according to Wikipedia ;)), batch size 1
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels) # batch size is 1
>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logits
BigBirdForTokenClassification
class transformers.BigBirdForTokenClassification
< source >
代码语言:javascript复制( config )
参数
config
(BigBirdConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
BigBird 模型,顶部带有一个标记分类头(隐藏状态输出的线性层),例如用于命名实体识别(NER)任务。
此模型是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
< source >
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.TokenClassifierOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 输入 ID 是什么? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充令牌索引上执行注意力的掩码。掩码值选定在[0, 1]
范围内:- 对于未被
masked
的令牌,值为 1, - 对于被
masked
的令牌,值为 0。
注意力掩码是什么?
- 对于未被
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 段标记索引,指示输入的第一部分和第二部分。索引选定在[0, 1]
范围内:- 0 对应于句子 A令牌,
- 1 对应于句子 B令牌。
令牌类型 ID 是什么?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列令牌在位置嵌入中的位置索引。选定范围为[0, config.max_position_embeddings - 1]
。 位置 ID 是什么? -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]
范围内:- 1 表示头部未被
masked
。 - 0 表示头部被
masked
。
- 1 表示头部未被
-
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望更多地控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回的张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回的张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回一个 ModelOutput 而不是一个普通元组。 -
labels
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 用于计算令牌分类损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。
返回值
transformers.modeling_outputs.TokenClassifierOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.TokenClassifierOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含各种元素,具体取决于配置(BigBirdConfig)和输入。
-
loss
(形状为(1,)
的torch.FloatTensor
,可选,当提供labels
时返回)— 分类损失。 -
logits
(形状为(batch_size, sequence_length, config.num_labels)
的torch.FloatTensor
)— 分类得分(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。 每层模型的输出的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
BigBirdForTokenClassification 的前向方法覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, BigBirdForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = BigBirdForTokenClassification.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
BigBirdForQuestionAnswering
class transformers.BigBirdForQuestionAnswering
< source >
代码语言:javascript复制( config add_pooling_layer = False )
参数
config
(BigBirdConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
BigBird 模型,在顶部带有一个用于提取问题回答任务(如 SQuAD)的跨度分类头(在隐藏状态输出的顶部有线性层,用于计算 span start logits
和 span end logits
)。
此模型是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
< source >
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None question_lengths: Optional = None token_type_ids: Optional = None position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None start_positions: Optional = None end_positions: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.big_bird.modeling_big_bird.BigBirdForQuestionAnsweringModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:- 1 代表未被遮蔽的标记,
- 0 代表被遮蔽的标记。
什么是注意力掩码?
-
token_type_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
中:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
什么是标记类型 ID?
-
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 什么是位置 ID? -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选择在[0, 1]
中:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
-
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids索引转换为关联向量,而不是模型的内部嵌入查找矩阵。 -
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。 -
start_positions
(形状为(batch_size,)
的torch.LongTensor
,可选)— 用于计算标记分类损失的标记范围开始位置的位置(索引)。位置被夹紧到序列的长度(sequence_length
)。序列外的位置不会被考虑在内以计算损失。 -
end_positions
(形状为(batch_size,)
的torch.LongTensor
,可选)— 用于计算标记范围结束位置的位置(索引)的标签,以计算标记分类损失。位置被夹紧到序列的长度(sequence_length
)。序列外的位置不会被考虑在内以计算损失。
返回
transformers.models.big_bird.modeling_big_bird.BigBirdForQuestionAnsweringModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.big_bird.modeling_big_bird.BigBirdForQuestionAnsweringModelOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入的各种元素。
-
loss
(形状为(1,)
的torch.FloatTensor
,可选,当提供labels
时返回)— 总跨度提取损失是开始和结束位置的交叉熵之和。 -
start_logits
(形状为(batch_size, sequence_length)
的torch.FloatTensor
)— 跨度开始分数(SoftMax 之前)。 -
end_logits
(形状为(batch_size, sequence_length)
的torch.FloatTensor
)— 跨度结束分数(SoftMax 之前)。 -
pooler_output
(形状为(batch_size, 1)
的torch.FloatTensor
)— 来自 BigBigModel 的池化器输出 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 一个用于每层的输出)。 模型在每一层输出的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
BigBirdForQuestionAnswering 的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, BigBirdForQuestionAnswering
>>> from datasets import load_dataset
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = BigBirdForQuestionAnswering.from_pretrained("google/bigbird-roberta-base")
>>> squad_ds = load_dataset("squad_v2", split="train")
>>> # select random article and question
>>> LONG_ARTICLE = squad_ds[81514]["context"]
>>> QUESTION = squad_ds[81514]["question"]
>>> QUESTION
'During daytime how high can the temperatures reach?'
>>> inputs = tokenizer(QUESTION, LONG_ARTICLE, return_tensors="pt")
>>> # long article and question input
>>> list(inputs["input_ids"].shape)
[1, 929]
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()
>>> predict_answer_token_ids = inputs.input_ids[0, answer_start_index : answer_end_index 1]
>>> predict_answer_token = tokenizer.decode(predict_answer_token_ids)
代码语言:javascript复制>>> target_start_index, target_end_index = torch.tensor([130]), torch.tensor([132])
>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
JAXHide JAX 内容
FlaxBigBirdModel
class transformers.FlaxBigBirdModel
<来源>
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
-
config
(BigBirdConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。 -
dtype
(jax.numpy.dtype
,可选,默认为jax.numpy.float32
) — 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。 这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定了dtype
,则所有计算将使用给定的dtype
执行。请注意,这仅指定计算的数据类型,不会影响模型参数的数据类型。
如果您希望更改模型参数的数据类型,请参阅 to_fp16() 和 to_bf16()。
裸的 BigBird 模型变压器输出原始隐藏状态,没有特定的头部。
此模型继承自 FlaxPreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如从 PyTorch 模型下载、保存和转换权重)。
此模型还是一个 flax.linen.Module 子类。将其用作常规的 Flax linen 模块,并参考 Flax 文档以获取与一般用法和行为相关的所有内容。
最后,此模型支持 JAX 的固有特性,例如:
- 即时 (JIT) 编译
- 自动微分
- 向量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling or tuple(torch.FloatTensor)
参数
-
input_ids
(numpy.ndarray
,形状为(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
() 获取详细信息。 什么是输入 ID? -
attention_mask
(numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
:- 1 表示未被掩盖的标记,
- 0 表示被掩盖的标记。
什么是注意力掩码?
-
token_type_ids
(numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 段标记索引,指示输入的第一部分和第二部分。索引选在[0, 1]
:- 0 对应于一个 句子 A 标记,
- 1 对应于一个 句子 B 标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
head_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)-- 用于使注意力模块的选定头部失效的掩码。掩码值选择在
[0, 1]`中:- 1 表示头部未被遮罩,
- 0 表示头部被遮罩。
-
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或tuple(torch.FloatTensor)
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPooling 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入的不同元素。
-
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
)- 模型最后一层的隐藏状态序列。 -
pooler_output
(形状为(batch_size, hidden_size)
的jnp.ndarray
)- 序列第一个标记的最后一层隐藏状态(分类标记)经过线性层和 Tanh 激活函数进一步处理。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)-jnp.ndarray
元组(一个用于嵌入输出,一个用于每个层的输出)的形状为(batch_size, sequence_length, hidden_size)
。 模型在每一层的输出隐藏状态以及初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)-jnp.ndarray
元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
FlaxBigBirdPreTrainedModel
的前向方法重写了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdModel
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdModel.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
FlaxBigBirdForPreTraining
class transformers.FlaxBigBirdForPreTraining
< source >
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
-
config
(BigBirdConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
,可选,默认为jax.numpy.float32
)- 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。 这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定了dtype
,则所有计算将使用给定的dtype
执行。请注意,这仅指定计算的 dtype,不影响模型参数的 dtype。
如果要更改模型参数的 dtype,请参阅 to_fp16()和 to_bf16()。
BigBird 模型在预训练期间顶部有两个头部:一个“掩码语言建模”头部和一个“下一个句子预测(分类)”头部。
这个模型继承自 FlaxPreTrainedModel。检查超类文档,了解库为其所有模型实现的通用方法(如从 PyTorch 模型下载、保存和转换权重)。
这个模型也是一个flax.linen.Module子类。将其用作常规的 Flax 亚麻模块,并参考 Flax 文档以获取与一般用法和行为相关的所有内容。
最后,这个模型支持 JAX 的固有特性,如:
- 即时(JIT)编译
- 自动微分
- 矢量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → export const metadata = 'undefined';transformers.models.big_bird.modeling_flax_big_bird.FlaxBigBirdForPreTrainingOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
)- 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 避免在填充令牌索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 表示未被“掩码”的令牌,
- 0 表示被“掩码”的令牌。
什么是注意力掩码?
-
token_type_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 段令牌索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于句子 A令牌,
- 1 对应于句子 B令牌。
什么是令牌类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 位置嵌入中每个输入序列标记的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
head_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 用于使注意力模块的选定头部无效的掩码。掩码值在
[0, 1]`中选择:- 1 表示头部未被“掩码”,
- 0 表示头部是“掩码”。
-
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.big_bird.modeling_flax_big_bird.FlaxBigBirdForPreTrainingOutput
或tuple(torch.FloatTensor)
一个transformers.models.big_bird.modeling_flax_big_bird.FlaxBigBirdForPreTrainingOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
)包含根据配置(BigBirdConfig)和输入的各种元素。
-
prediction_logits
(形状为(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
)—语言建模头部的预测分数(SoftMax 之前每个词汇标记的分数)。 -
seq_relationship_logits
(形状为(batch_size, 2)
的jnp.ndarray
)—下一个序列预测(分类)头部的预测分数(SoftMax 之前的 True/False 连续性分数)。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)—形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层输出的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)—形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
FlaxBigBirdPreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdForPreTraining
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdForPreTraining.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.prediction_logits
>>> seq_relationship_logits = outputs.seq_relationship_logits
FlaxBigBirdForCausalLM
class transformers.FlaxBigBirdForCausalLM
<来源>
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
-
config
(BigBirdConfig)—具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
,可选,默认为jax.numpy.float32
)—计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。 这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定了 dtype,所有计算将使用给定的 dtype 执行。请注意,这仅指定计算的 dtype,不影响模型参数的 dtype。
如果您希望更改模型参数的 dtype,请参阅 to_fp16()和 to_bf16()。
BigBird 模型顶部带有语言建模头部(隐藏状态输出的线性层),例如用于自回归任务。
此模型继承自 FlaxPreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如从 PyTorch 模型下载、保存和转换权重)。
此模型也是flax.linen.Module的子类。将其用作常规的 Flax linen 模块,并参考 Flax 文档以获取有关一般用法和行为的所有信息。
最后,该模型支持 JAX 的固有特性,例如:
- 即时编译 (JIT)
- 自动微分
- 向量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)
参数
-
input_ids
(numpy.ndarray
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(numpy.ndarray
of shape(batch_size, sequence_length)
, 可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
:- 1 用于未被掩盖的标记,
- 0 用于被掩盖的标记。
什么是注意力掩码?
-
token_type_ids
(numpy.ndarray
of shape(batch_size, sequence_length)
, 可选) — 指示输入的第一部分和第二部分的段标记索引。索引选择在[0, 1]
:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
什么是标记类型 ID?
-
position_ids
(numpy.ndarray
of shape(batch_size, sequence_length)
, 可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 -
head_mask
(numpy.ndarray
of shape(batch_size, sequence_length)
,可选) -- 用于使注意力模块的选定头部失效的掩码。掩码值选择在
[0, 1]`:- 1 表示头部未被掩盖,
- 0 表示头部被掩盖。
-
return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入的不同元素。
-
logits
(jnp.ndarray
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
hidden_states
(tuple(jnp.ndarray)
, 可选, 当传递了output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 交叉注意力 softmax 后的注意力权重,用于计算交叉注意力头中的加权平均值。 -
past_key_values
(tuple(tuple(jnp.ndarray))
,可选,当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的jnp.ndarray
元组的元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态。仅在config.is_decoder = True
时相关。 包含预先计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码(请参阅past_key_values
输入)。
FlaxBigBirdPreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdForCausalLM
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdForCausalLM.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="np")
>>> outputs = model(**inputs)
>>> # retrieve logts for next token
>>> next_token_logits = outputs.logits[:, -1]
FlaxBigBirdForMaskedLM
class transformers.FlaxBigBirdForMaskedLM
< source >
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
-
config
(BigBirdConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
,可选,默认为jax.numpy.float32
) — 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。 这可用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定,所有计算将使用给定的dtype
执行。请注意,这仅指定计算的数据类型,不会影响模型参数的数据类型。
如果希望更改模型参数的数据类型,请参阅 to_fp16()和 to_bf16()。
BigBird 模型顶部带有语言建模
头。
这个模型继承自 FlaxPreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如从 PyTorch 模型下载、保存和转换权重)。
此模型还是flax.linen.Module子类。将其用作常规 Flax 亚麻模块,并参考 Flax 文档以获取有关一般用法和行为的所有相关信息。
最后,此模型支持 JAX 的固有功能,例如:
- 即时(JIT)编译
- 自动微分
- 向量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxMaskedLMOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(numpy.ndarray
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。详情请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(numpy.ndarray
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]
之间:- 1 代表
未被掩码
的标记, - 0 代表
被掩码
的标记。
什么是注意力掩码?
- 1 代表
-
token_type_ids
(numpy.ndarray
of shape(batch_size, sequence_length)
, optional) — 指示输入的第一部分和第二部分的段标记索引。索引选定在[0, 1]
之间:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
什么是标记类型 ID?
-
position_ids
(numpy.ndarray
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。选定范围为[0, config.max_position_embeddings - 1]
。 -
head_mask
(numpy.ndarray
of shape(batch_size, sequence_length)
,optional) -- 用于使注意力模块中选定头部失效的掩码。掩码值选定在
[0, 1]`之间:- 1 表示头部
未被掩码
, - 0 表示头部
被掩码
。
- 1 表示头部
-
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。
返回
transformers.modeling_flax_outputs.FlaxMaskedLMOutput 或 torch.FloatTensor
元组
一个 transformers.modeling_flax_outputs.FlaxMaskedLMOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或者 config.return_dict=False
)包含根据配置(BigBirdConfig)和输入而异的各种元素。
-
logits
(jnp.ndarray
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头部的预测分数(SoftMax 之前每个词汇标记的分数)。 -
hidden_states
(tuple(jnp.ndarray)
, optional, 当传递output_hidden_states=True
或者config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出 一个用于每层的输出)。 每层模型的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
, optional, 当传递output_attentions=True
或者config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 在自注意力头部中用于计算加权平均值的注意力 softmax 后的注意力权重。
FlaxBigBirdPreTrainedModel
的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdForMaskedLM
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdForMaskedLM.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("The capital of France is [MASK].", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxBigBirdForSequenceClassification
class transformers.FlaxBigBirdForSequenceClassification
<来源>
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
-
config
(BigBirdConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
,可选,默认为jax.numpy.float32
)— 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。 这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定了所有计算将使用给定的dtype
进行。请注意,这仅指定计算的数据类型,不影响模型参数的数据类型。
如果您希望更改模型参数的数据类型,请参阅 to_fp16()和 to_bf16()。
BigBird 模型变压器,顶部带有序列分类/回归头(顶部的线性层在汇总输出之上),例如用于 GLUE 任务。
此模型继承自 FlaxPreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如从 PyTorch 模型下载、保存和转换权重)。
此模型还是flax.linen.Module子类。将其用作常规的 Flax 亚麻模块,并参考 Flax 文档以获取有关一般用法和行为的所有相关信息。
最后,此模型支持 JAX 的固有特性,例如:
- 即时(JIT)编译
- 自动微分
- 矢量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
)— 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)— 用于避免在填充令牌索引上执行注意力的掩码。选择的掩码值在[0, 1]
中:- 对于
未掩码
的标记为 1, - 对于
掩码
的标记为 0。
什么是注意力掩码?
- 对于
-
token_type_ids
(numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 段标记索引,指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于句子 A的标记,
- 1 对应于句子 B的标记。
什么是 token type IDs?
-
position_ids
(numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
head_mask
(numpy.ndarray
,形状为(batch_size, sequence_length)
,可选) – 用于使注意力模块的选定头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
-
return_dict
(bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。
返回
transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxSequenceClassifierOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入不同元素。
-
logits
(jnp.ndarray
,形状为(batch_size, config.num_labels)
) — 分类(如果 config.num_labels==1 则为回归)得分(SoftMax 之前)。 -
hidden_states
(tuple(jnp.ndarray)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出 一个用于每个层的输出)。 每个层的模型的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每个层一个)。 在自注意力头中用于计算加权平均值的注意力 softmax 后的注意力权重。
FlaxBigBirdPreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdForSequenceClassification.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxBigBirdForMultipleChoice
class transformers.FlaxBigBirdForMultipleChoice
<来源>
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
参数
-
config
(BigBirdConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
, 可选, 默认为jax.numpy.float32
) — 计算的数据类型。可以是jax.numpy.float32
之一,jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)。 这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定,所有计算将使用给定的dtype
执行。请注意,这仅指定计算的 dtype,不影响模型参数的 dtype。
如果您希望更改模型参数的 dtype,请参阅 to_fp16()和 to_bf16()。
BigBird 模型,顶部带有一个多选分类头(池化输出顶部的线性层和 softmax),例如用于 RocStories/SWAG 任务。
此模型继承自 FlaxPreTrainedModel。查看超类文档以获取库为其所有模型实现的通用方法(例如从 PyTorch 模型下载、保存和转换权重)。
此模型还是一个flax.linen.Module子类。将其用作常规的 Flax 亚麻模块,并参考 Flax 文档以获取有关一般用法和行为的所有相关信息。
最后,此模型支持 JAX 的固有特性,例如:
- 即时(JIT)编译
- 自动微分
- 向量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, num_choices, sequence_length)
的numpy.ndarray
)— 词汇表中输入序列令牌的索引。 可以使用 AutoTokenizer 来获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, num_choices, sequence_length)
的numpy.ndarray
,可选)— 用于避免在填充令牌索引上执行注意力的蒙版。蒙版值选定在[0, 1]
之间:- 值为 1 对应于未被 masked的令牌,
- 对于被
masked
的令牌,值为 0。
注意力蒙版是什么?
-
token_type_ids
(形状为(batch_size, num_choices, sequence_length)
的numpy.ndarray
,可选)— 指示输入的第一部分和第二部分的段标记索引。索引选定在[0, 1]
之间:- 值为 0 对应于句子 A令牌,
- 值为 1 对应于句子 B令牌。
什么是令牌类型 ID?
-
position_ids
(形状为(batch_size, num_choices, sequence_length)
的numpy.ndarray
,可选)— 每个输入序列令牌在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选定。 -
head_mask
(形状为(batch_size, num_choices, sequence_length)
的numpy.ndarray
,可选
)-- 用于使注意力模块的选定头部无效的蒙版。蒙版值选定在[0, 1]
之间:- 值为 1 表示头部未被
masked
, - 值为 0 表示头部被
masked
。
- 值为 1 表示头部未被
-
return_dict
(bool
,可选)— 是否返回一个 ModelOutput 而不是一个普通的元组。
返回
transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxMultipleChoiceModelOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或当config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入的各种元素。
-
logits
(形状为(batch_size, num_choices)
的jnp.ndarray
) — num_choices是输入张量的第二个维度。(参见上面的input_ids)。 分类得分(SoftMax 之前)。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
FlaxBigBirdPreTrainedModel
的前向方法覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在之后调用Module
实例,而不是这个函数,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdForMultipleChoice
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdForMultipleChoice.from_pretrained("google/bigbird-roberta-base")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="jax", padding=True)
>>> outputs = model(**{k: v[None, :] for k, v in encoding.items()})
>>> logits = outputs.logits
FlaxBigBirdForTokenClassification
class transformers.FlaxBigBirdForTokenClassification
<来源>
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
-
config
(BigBirdConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
,可选,默认为jax.numpy.float32
) — 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。 这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定,所有计算将使用给定的dtype
执行。请注意,这只指定了计算的数据类型,不会影响模型参数的数据类型。
如果希望更改模型参数的数据类型,请参阅 to_fp16()和 to_bf16()。
BigBird 模型在顶部带有一个标记分类头部(隐藏状态输出的线性层),例如用于命名实体识别(NER)任务。
此模型继承自 FlaxPreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载、保存和从 PyTorch 模型转换权重)。
此模型还是一个flax.linen.Module子类。将其用作常规的 Flax linen 模块,并参考 Flax 文档以了解与一般用法和行为相关的所有事项。
最后,此模型支持 JAX 的内在特性,例如:
- 即时(JIT)编译
- 自动微分
- 向量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None encoder_hidden_states = None encoder_attention_mask = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None past_key_values: dict = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxTokenClassifierOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
)- 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]
中:- 对于未被
masked
的标记为 1, - 对于被
masked
的标记为 0。
什么是注意力掩码?
- 对于未被
-
token_type_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 段标记索引,指示输入的第一部分和第二部分。索引选定在[0, 1]
中:- 0 对应于句子 A标记,
- 1 对应于句子 B标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)- 位置嵌入中每个输入序列标记的位置索引。在范围[0, config.max_position_embeddings - 1]
中选定。 -
head_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选) - 用于使注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]
之间:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
return_dict
(bool
,可选)- 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxTokenClassifierOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxTokenClassifierOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(BigBirdConfig)和输入不同元素。
-
logits
(形状为(batch_size, sequence_length, config.num_labels)
的jnp.ndarray
)- 分类分数(SoftMax 之前)。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出 一个用于每层的输出)。 每层模型的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 在自注意力头中用于计算加权平均值的注意力 softmax 之后的注意力权重。
FlaxBigBirdPreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdForTokenClassification
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdForTokenClassification.from_pretrained("google/bigbird-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="jax")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
FlaxBigBirdForQuestionAnswering
class transformers.FlaxBigBirdForQuestionAnswering
<来源>
代码语言:javascript复制( config: BigBirdConfig input_shape: Optional = None seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True gradient_checkpointing: bool = False **kwargs )
参数
-
config
(BigBirdConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。 -
dtype
(jax.numpy.dtype
,可选,默认为jax.numpy.float32
) — 计算的数据类型。可以是jax.numpy.float32
、jax.numpy.float16
(在 GPU 上)和jax.numpy.bfloat16
(在 TPU 上)之一。 这可以用于在 GPU 或 TPU 上启用混合精度训练或半精度推断。如果指定,所有计算将使用给定的dtype
执行。请注意,这只指定了计算的数据类型,不会影响模型参数的数据类型。
如果您希望更改模型参数的数据类型,请参阅 to_fp16()和 to_bf16()。
BigBird 模型在顶部具有一个跨度分类头,用于提取式问答任务,如 SQuAD(在隐藏状态输出的顶部进行线性层计算span start logits
和span end logits
)。
这个模型继承自 FlaxPreTrainedModel。查看超类文档以了解库实现的所有模型的通用方法(例如从 PyTorch 模型下载、保存和转换权重)。
这个模型也是一个flax.linen.Module子类。将其用作常规的 Flax linen 模块,并参考 Flax 文档以了解所有与一般用法和行为相关的事项。
最后,这个模型支持 JAX 的内在特性,例如:
- 即时(JIT)编译
- 自动微分
- 向量化
- 并行化
__call__
<来源>
代码语言:javascript复制( input_ids attention_mask = None token_type_ids = None position_ids = None head_mask = None question_lengths = None params: dict = None dropout_rng: Optional = None indices_rng: Optional = None train: bool = False output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.big_bird.modeling_flax_big_bird.FlaxBigBirdForQuestionAnsweringModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()以获取详细信息。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选) — 避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]
中。- 1 表示
未屏蔽
的标记, - 0 表示被屏蔽的标记。
什么是注意力掩码?
- 1 表示
-
token_type_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)— 段标记索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 句子 A 的标记,
- 1 对应于 句子 B 的标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选)— 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
head_mask
(形状为(batch_size, sequence_length)
的numpy.ndarray
,可选
)-- 用于使注意力模块中选定头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
-
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.big_bird.modeling_flax_big_bird.FlaxBigBirdForQuestionAnsweringModelOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.big_bird.modeling_flax_big_bird.FlaxBigBirdForQuestionAnsweringModelOutput
或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或 config.return_dict=False
或 config.return_dict=False
)包含根据配置(BigBirdConfig)和输入的不同元素。
-
start_logits
(形状为(batch_size, sequence_length)
的jnp.ndarray
)— 跨度起始分数(SoftMax 之前)。 -
end_logits
(形状为(batch_size, sequence_length)
的jnp.ndarray
)— 跨度结束分数(SoftMax 之前)。 -
pooled_output
(形状为(batch_size, hidden_size)
的jnp.ndarray
)— FlaxBigBirdModel 返回的汇总输出。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出,一个用于每一层的输出)。 模型在每一层输出的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
FlaxBigBirdForQuestionAnswering 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxBigBirdForQuestionAnswering
>>> tokenizer = AutoTokenizer.from_pretrained("google/bigbird-roberta-base")
>>> model = FlaxBigBirdForQuestionAnswering.from_pretrained("google/bigbird-roberta-base")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="jax")
>>> outputs = model(**inputs)
>>> start_scores = outputs.start_logits
>>> end_scores = outputs.end_logits