Transformers 4.37 中文文档(六十二)(2)

简介: Transformers 4.37 中文文档(六十二)

Transformers 4.37 中文文档(六十二)(1)https://developer.aliyun.com/article/1564096


XLMProphetNetForCausalLM

class transformers.XLMProphetNetForCausalLM

<来源>

( config: XLMProphetNetConfig )

参数

  • config(XLMProphetNetConfig)- 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

XLMProphetNetModel 的独立解码器部分,顶部带有 lm 头。该模型可用于因果语言建模。此模型继承自 PreTrainedModel。检查超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

原始 ProphetNet 代码可以在这里找到。检查点是从原始 Fairseq 检查点转换而来的。有关检查点转换的更多信息,请查看文件convert_prophetnet_original_pytorch_checkpoint_to_pytorch.py

此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有事项。

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None encoder_hidden_states: Optional = None encoder_attention_mask: Optional = None head_mask: Optional = None cross_attn_head_mask: Optional = None past_key_values: Optional = None inputs_embeds: 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.models.xlm_prophetnet.modeling_xlm_prophetnet.XLMProphetNetDecoderLMOutput 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.Tensor可选)- 避免在填充标记索引上执行注意力的掩码。选择的掩码值在[0, 1]中:
  • 对于未被“掩码”的标记,
  • 对于被“掩码”的标记。
  • 什么是注意力掩码?
  • head_mask(形状为(encoder_layers, encoder_attention_heads)torch.Tensor可选)— 用于将编码器中注意力模块的选定头部置零的掩码。掩码值在[0, 1]中选择:
  • 1 表示头部未被“掩码”,
  • 0 表示头部被“掩码”。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dictbool可选)— 是否返回 ModelOutput 而不是普通元组。
  • encoder_hidden_states(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 编码器最后一层输出的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)— 用于避免对编码器输入的填充标记索引执行注意力。如果模型配置为解码器,则在交叉注意力中使用此掩码。掩码值在[0, 1]中选择:
  • cross_attn_head_mask(形状为(decoder_layers, decoder_attention_heads)torch.Tensor可选)— 用于将交叉注意力模块的选定头部置零的掩码。掩码值在[0, 1]中选择:
  • 1 表示头部未被“掩码”,
  • 0 表示头部被“掩码”。
  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含形状为(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_cachebool可选)— 如果设置为True,则返回past_key_values键值状态,并可用于加速解码(参见past_key_values)。
  • 对于未被“掩码”的标记,
  • 对于被“掩码”的标记。
  • labels(形状为(batch_size, sequence_length)torch.LongTensor可选)— 用于计算从左到右的语言建模损失(下一个词预测)的标签。索引应在[-100, 0, ..., config.vocab_size]中(参见input_ids文档字符串)。索引设置为-100的标记将被忽略(掩码),损失仅计算具有标签 n [0, ..., config.vocab_size]的标记

返回

transformers.models.xlm_prophetnet.modeling_xlm_prophetnet.XLMProphetNetDecoderLMOutputtuple(torch.FloatTensor)

一个transformers.models.xlm_prophetnet.modeling_xlm_prophetnet.XLMProphetNetDecoderLMOutput或一个torch.FloatTensor的元组(如果传递了return_dict=False或当config.return_dict=False时)包含根据配置(XLMProphetNetConfig)和输入的各种元素。

  • loss(形状为(1,)torch.FloatTensor可选,在提供labels时返回)— 语言建模损失。
  • logits(形状为(batch_size, decoder_sequence_length, config.vocab_size)torch.FloatTensor)— 主流语言建模头部的预测分数(SoftMax 之前每个词汇标记的分数)。
  • logits_ngram (形状为 (batch_size, ngram * decoder_sequence_length, config.vocab_size)torch.FloatTensor`) — 预测流语言建模头的预测分数(SoftMax 前每个词汇标记的分数)。
  • past_key_values (List[torch.FloatTensor], 可选的,当传递 use_cache=True 或当 config.use_cache=True 时返回) — 长度为 config.n_layerstorch.FloatTensor 列表,每个张量的形状为 (2, batch_size, num_attn_heads, decoder_sequence_length, embed_size_per_head)
    包含解码器的预计算隐藏状态(注意力块中的键和值),可用于加速顺序解码(见 past_key_values 输入)。
  • hidden_states (tuple(torch.FloatTensor), 可选的,当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — 形状为 (batch_size, decoder_sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入的输出 + 一个用于每层的输出)。
    解码器主流的隐藏状态,在每层的输出以及初始嵌入输出。
  • ngram_hidden_states (tuple(torch.FloatTensor), 可选的,当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — 形状为 (batch_size, ngram * decoder_sequence_length, hidden_size)torch.FloatTensor 元组(一个用于嵌入的输出 + 一个用于每层的输出)。
    解码器预测流的隐藏状态,在每层的输出以及初始嵌入输出。
  • attentions (tuple(torch.FloatTensor), 可选的,当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为 (batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length)torch.FloatTensor 元组(每层一个)。
    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
  • ngram_attentions (tuple(torch.FloatTensor), 可选的,当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为 (batch_size, num_attn_heads, decoder_sequence_length, decoder_sequence_length)torch.FloatTensor 元组(每层一个)。
    解码器预测流的注意力权重,在注意力 softmax 之后,用于计算加权平均值。
  • cross_attentions (tuple(torch.FloatTensor), 可选的,当传递 output_attentions=True 或当 config.output_attentions=True 时返回) — 形状为 (batch_size, num_attn_heads, encoder_sequence_length, decoder_sequence_length)torch.FloatTensor 元组(每层一个)。
    解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算加权平均值。

XLMProphetNetForCausalLM 的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的步骤需要在这个函数内定义,但应该在之后调用 Module 实例,而不是这个函数,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, XLMProphetNetForCausalLM
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("patrickvonplaten/xprophetnet-large-uncased-standalone")
>>> model = XLMProphetNetForCausalLM.from_pretrained("patrickvonplaten/xprophetnet-large-uncased-standalone")
>>> assert model.config.is_decoder, f"{model.__class__} has to be configured as a decoder."
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> # Model can also be used with EncoderDecoder framework
>>> from transformers import BertTokenizer, EncoderDecoderModel, AutoTokenizer
>>> import torch
>>> tokenizer_enc = BertTokenizer.from_pretrained("bert-large-uncased")
>>> tokenizer_dec = AutoTokenizer.from_pretrained("patrickvonplaten/xprophetnet-large-uncased-standalone")
>>> model = EncoderDecoderModel.from_encoder_decoder_pretrained(
...     "bert-large-uncased", "patrickvonplaten/xprophetnet-large-uncased-standalone"
... )
>>> ARTICLE = (
...     "the us state department said wednesday it had received no "
...     "formal word from bolivia that it was expelling the us ambassador there "
...     "but said the charges made against him are `` baseless ."
... )
>>> input_ids = tokenizer_enc(ARTICLE, return_tensors="pt").input_ids
>>> labels = tokenizer_dec(
...     "us rejects charges against its ambassador in bolivia", return_tensors="pt"
... ).input_ids
>>> outputs = model(input_ids=input_ids, decoder_input_ids=labels[:, :-1], labels=labels[:, 1:])
>>> loss = outputs.loss

XLM-RoBERTa

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/xlm-roberta

概述

XLM-RoBERTa 模型是由 Alexis Conneau、Kartikay Khandelwal、Naman  Goyal、Vishrav Chaudhary、Guillaume Wenzek、Francisco Guzmán、Edouard  Grave、Myle Ott、Luke Zettlemoyer 和 Veselin Stoyanov  在《规模化无监督跨语言表示学习》一文中提出的。它基于 Facebook 于 2019 年发布的 RoBERTa  模型。这是一个大型的多语言语言模型,训练了 2.5TB 的经过滤的 CommonCrawl 数据。

论文摘要如下:

这篇论文表明,规模化预训练多语言语言模型可以显著提高各种跨语言转移任务的性能。我们在一百种语言上训练了基于 Transformer  的掩码语言模型,使用了超过两太字节的经过滤波的 CommonCrawl 数据。我们的模型,被称为  XLM-R,在各种跨语言基准测试中明显优于多语言 BERT(mBERT),包括 XNLI 上平均准确率提高了+13.8%,MLQA 上平均 F1  分数提高了+12.3%,NER 上平均 F1 分数提高了+2.1%。XLM-R 在低资源语言上表现特别出色,在 XNLI  准确率上为斯瓦希里语提高了 11.8%,乌尔都语提高了 9.2%,超过了之前的 XLM  模型。我们还对实现这些收益所需的关键因素进行了详细的实证评估,包括(1)正向转移和容量稀释之间的权衡,以及(2)规模上高低资源语言的性能。最后,我们首次展示了多语言建模的可能性,而不会牺牲每种语言的性能;XLM-R  在 GLUE 和 XNLI 基准测试上与强大的单语模型竞争力强。我们将公开提供 XLM-R 的代码、数据和模型。

这个模型是由stefan-it贡献的。原始代码可以在这里找到。

使用提示

  • XLM-RoBERTa 是在 100 种不同语言上训练的多语言模型。与一些 XLM 多语言模型不同,它不需要lang张量来理解使用的语言,并且应该能够从输入 id 中确定正确的语言。
  • 使用 RoBERTa 技巧在 XLM 方法上,但不使用翻译语言建模目标。它只在来自一种语言的句子上使用掩码语言建模。

资源

一个官方的 Hugging Face 和社区(由🌎表示)资源列表,可以帮助您开始使用 XLM-RoBERTa。如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将进行审查!资源应该理想地展示一些新东西,而不是重复现有资源。

文本分类

  • 一篇关于如何在 AWS 上使用 Habana Gaudi 对 XLM RoBERTa 进行多类别分类微调的博客文章
  • XLMRobertaForSequenceClassification 由这个示例脚本笔记本支持。
  • TFXLMRobertaForSequenceClassification 由这个示例脚本笔记本支持。
  • FlaxXLMRobertaForSequenceClassification 由这个示例脚本笔记本支持。
  • 🤗 Hugging Face 任务指南的文本分类章节。
  • 文本分类任务指南

Token 分类

文本生成

填充-掩码

问答

多项选择

🚀 部署

这个实现与 RoBERTa 相同。请参考 RoBERTa 的文档以获取用法示例以及与输入和输出相关的信息。

XLMRobertaConfig

class transformers.XLMRobertaConfig

<来源>

( vocab_size = 30522 hidden_size = 768 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-12 pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 position_embedding_type = 'absolute' use_cache = True classifier_dropout = None **kwargs )

参数

  • vocab_size (int, optional, 默认为 30522) — XLM-RoBERTa 模型的词汇大小。定义了在调用 XLMRobertaModel 或 TFXLMRobertaModel 时可以表示的不同标记数量。
  • hidden_size (int, optional, 默认为 768) — 编码器层和池化层的维度。
  • num_hidden_layers (int, optional, 默认为 12) — Transformer 编码器中的隐藏层数量。
  • num_attention_heads (int, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数量。
  • intermediate_size (int, 可选, 默认为 3072) — Transformer 编码器中“中间”(通常称为前馈)层的维度。
  • hidden_act (strCallable, 可选, 默认为 "gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持 "gelu""relu""silu""gelu_new"
  • hidden_dropout_prob (float, 可选, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的丢失概率。
  • attention_probs_dropout_prob (float, 可选, 默认为 0.1) — 注意力概率的丢失比率。
  • max_position_embeddings (int, 可选, 默认为 512) — 此模型可能会使用的最大序列长度。通常将其设置为较大的值以防万一(例如,512 或 1024 或 2048)。
  • type_vocab_size (int, 可选, 默认为 2) — 在调用 XLMRobertaModel 或 TFXLMRobertaModel 时传递的 token_type_ids 的词汇量。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-12) — 层归一化层使用的 epsilon。
  • position_embedding_type (str, 可选, 默认为 "absolute") — 位置嵌入的类型。选择 "absolute""relative_key""relative_key_query" 中的一个。对于位置嵌入,请使用 "absolute"。有关 "relative_key" 的更多信息,请参考使用相对位置表示的自注意力(Shaw 等人)。有关 "relative_key_query" 的更多信息,请参考使用更好的相对位置嵌入改进 Transformer 模型(Huang 等人) 中的 方法 4
  • is_decoder (bool, 可选, 默认为 False) — 模型是否用作解码器。如果为 False,则模型用作编码器。
  • use_cache (bool, 可选, 默认为 True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅在 config.is_decoder=True 时相关。
  • classifier_dropout (float, 可选) — 分类头的丢失比率。

这是用于存储 XLMRobertaModel 或 TFXLMRobertaModel 配置的配置类。它用于根据指定的参数实例化一个 XLM-RoBERTa 模型,定义模型架构。使用默认值实例化配置将产生与 XLMRoBERTa xlm-roberta-base架构类似的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。

示例:

>>> from transformers import XLMRobertaConfig, XLMRobertaModel
>>> # Initializing a XLM-RoBERTa xlm-roberta-base style configuration
>>> configuration = XLMRobertaConfig()
>>> # Initializing a model (with random weights) from the xlm-roberta-base style configuration
>>> model = XLMRobertaModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

XLMRobertaTokenizer

class transformers.XLMRobertaTokenizer

<来源>

( vocab_file bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' sp_model_kwargs: Optional = None **kwargs )

参数

  • vocab_file (str) — 词汇文件的路径。
  • bos_token (str, 可选, 默认为 "") — 在预训练期间使用的序列开始标记。可用作序列分类器标记。
    在使用特殊标记构建序列时,这不是用于序列开始的标记。使用的标记是 cls_token
  • eos_token (str, 可选, 默认为 "") — 序列结束标记。
    在使用特殊标记构建序列时,这不是用于序列结束的标记。使用的标记是sep_token
  • sep_token (str, 可选, 默认为 "") — 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于文本和问题的问题回答。也用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, 可选, 默认为 "") — 在进行序列分类(对整个序列进行分类而不是每个标记的分类)时使用的分类器标记。在构建带有特殊标记的序列时,它是序列的第一个标记。
  • unk_token (str, 可选, 默认为 "") — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • pad_token (str, 可选, 默认为 "") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • mask_token (str, 可选, 默认为 "") — 用于掩盖值的标记。在使用掩盖语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
  • 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 的合并操作的 dropout 概率。
  • sp_model (SentencePieceProcessor) — 用于每次转换(字符串、标记和 ID)的SentencePiece处理器。

改编自 RobertaTokenizer 和 XLNetTokenizer。基于SentencePiece

此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

<来源>

( 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 列表。

通过连接和添加特殊标记从序列或序列对构建用于序列分类任务的模型输入。XLM-RoBERTa 序列的格式如下:

  • 单个序列: X
  • 序列对: A B
get_special_tokens_mask

<来源>

( 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。当使用 tokenizer 的prepare_for_model方法添加特殊标记时,将调用此方法。

create_token_type_ids_from_sequences

< source >

( 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]

零列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。 XLM-RoBERTa 不使用标记类型 id,因此返回一个零列表。

save_vocabulary

< source >

( save_directory: str filename_prefix: Optional = None )

XLMRobertaTokenizerFast

class transformers.XLMRobertaTokenizerFast

< source >

( vocab_file = None tokenizer_file = None 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) — 词汇文件的路径。
  • bos_token (str, optional, defaults to "") — 在预训练期间使用的序列开始标记。可用作序列分类器标记。
    在使用特殊标记构建序列时,这不是用于序列开头的标记。使用的标记是cls_token
  • eos_token (str, optional, defaults to "") — 序列结束标记。
    在使用特殊标记构建序列时,这不是用于序列结尾的标记。使用的标记是sep_token
  • sep_token (str, optional, defaults to "") — 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于文本和问题的问题回答。它还用作使用特殊标记构建的序列的最后一个标记。
  • cls_token (str, optional, defaults to "") — 在进行序列分类(整个序列而不是每个标记的分类)时使用的分类器标记。当使用特殊标记构建序列时,它是序列的第一个标记。
  • unk_token (str, optional, defaults to "") — 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。
  • pad_token (str, optional, defaults to "") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • mask_token (str, optional, defaults to "") — 用于屏蔽值的标记。这是在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
  • additional_special_tokens (List[str], optional, defaults to ["NOTUSED", "NOTUSED"]) — 分词器使用的额外特殊标记。

构建一个“快速”XLM-RoBERTa 分词器(由 HuggingFace 的tokenizers库支持)。改编自 RobertaTokenizer 和 XLNetTokenizer。基于BPE

此分词器继承自 PreTrainedTokenizerFast,其中包含大部分主要方法。用户应参考此超类以获取有关这些方法的更多信息。

build_inputs_with_special_tokens

< source >

( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])— 将添加特殊标记的 ID 列表。
  • token_ids_1List[int]可选)— 序列对的可选第二个 ID 列表。

返回

List[int]

具有适当特殊标记的输入 ID 列表。

通过连接和添加特殊标记,从序列或序列对构建用于序列分类任务的模型输入。XLM-RoBERTa 序列的格式如下:

  • 单个序列: X
  • 序列对: A B
create_token_type_ids_from_sequences

<来源>

( token_ids_0: List token_ids_1: Optional = None ) → export const metadata = 'undefined';List[int]

参数

  • token_ids_0List[int])— ID 列表。
  • token_ids_1List[int]可选)— 序列对的可选第二个 ID 列表。

返回

List[int]

零列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。XLM-RoBERTa 不使用标记类型 ID,因此返回一个零列表。

Pytorch 隐藏 Pytorch 内容

XLMRobertaModel

class transformers.XLMRobertaModel

<来源>

( config add_pooling_layer = True )

参数

  • config(XLMRobertaConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

裸 XLM-RoBERTa 模型变压器输出原始隐藏状态,没有特定的头部。

该模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

该模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般使用和行为的所有相关信息。

该模型可以作为编码器(仅具有自注意力)以及解码器,此时在自注意力层之间添加了一层交叉注意力,遵循 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作为前向传递的输入。

… _注意力就是你所需要的arxiv.org/abs/1706.03762

forward

<来源>

( input_ids: Optional = 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(形状为(batch_size, sequence_length)torch.LongTensor)— 词汇表中输入序列标记的索引。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)- 用于避免在填充标记索引上执行注意力的掩码。 选择在[0, 1]中的掩码值:
  • 1 用于“未屏蔽”的标记,
  • 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 表示头部被“屏蔽”。
  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)- 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。 如果您想要更多控制如何将input_ids索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。
  • output_attentionsbool可选)- 是否返回所有注意力层的注意力张量。 有关更多详细信息,请参见返回张量下的attentions
  • output_hidden_statesbool可选)- 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的hidden_states
  • return_dictbool可选)- 是否返回 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_layerstuple(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_cachebool可选)- 如果设置为True,则返回past_key_values键值状态,并可用于加速解码(参见past_key_values)。

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPoolingAndCrossAttentions 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含根据配置(XLMRobertaConfig)和输入的不同元素。

  • last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor) — 模型最后一层的隐藏状态序列。
  • pooler_output(形状为(batch_size, hidden_size)torch.FloatTensor) — 经过辅助预训练任务的层进一步处理后,序列第一个标记(分类标记)的最后一层隐藏状态。例如,对于 BERT 系列模型,这返回经过线性层和 tanh 激活函数处理后的分类标记。线性层的权重是在预训练期间从下一个句子预测(分类)目标中训练的。
  • hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出+每层的输出)。
    每层模型的输出的隐藏状态以及可选的初始嵌入输出。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    用于计算自注意力头中加权平均值的注意力 softmax 后的注意力权重。
  • cross_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.add_cross_attention=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    解码器的交叉注意力层的注意力权重,在注意力 softmax 后使用,用于计算交叉注意力头中的加权平均值。
  • past_key_valuestuple(tuple(torch.FloatTensor))可选,当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstuple(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输入)。

XLMRobertaModel 的前向方法,覆盖了__call__特殊方法。

尽管前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, XLMRobertaModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("xlm-roberta-base")
>>> model = XLMRobertaModel.from_pretrained("xlm-roberta-base")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

XLMRobertaForCausalLM

class transformers.XLMRobertaForCausalLM

<来源>

( config )

参数

  • config (XLMRobertaConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

XLM-RoBERTa 模型在顶部带有语言建模头部,用于 CLM 微调。

此模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( input_ids: Optional = 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 past_key_values: Tuple = 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 (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 (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(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 编码器最后一层输出的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中使用。
  • encoder_attention_mask(形状为(batch_size, sequence_length)torch.FloatTensor可选)— 用于避免在编码器输入的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用此掩码。选择的掩码值为[0, 1]
  • 1 表示未被masked的标记,
  • 0 表示被masked的标记。
  • labels(形状为(batch_size, sequence_length)torch.LongTensor可选)— 用于计算从左到右的语言建模损失(下一个词预测)的标签。索引应在[-100, 0, ..., config.vocab_size]内(请参阅input_ids文档字符串)。索引设置为-100的标记将被忽略(被masked),损失仅计算具有标签在[0, ..., config.vocab_size]内的标记。
  • past_key_values(长度为config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含形状为(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_cachebool可选)— 如果设置为True,则会返回past_key_values键值状态,并可用于加速解码(请参阅past_key_values)。

返回

transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.CausalLMOutputWithCrossAttentions 或一个torch.FloatTensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含根据配置(XLMRobertaConfig)和输入的各种元素。

  • loss(形状为(1,)torch.FloatTensor可选,当提供labels时返回)— 语言建模损失(用于下一个标记预测)。
  • logits(形状为(batch_size, sequence_length, config.vocab_size)torch.FloatTensor)— 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。
  • hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型具有嵌入层,则为嵌入输出的输出+每层输出的输出)。
    模型在每一层输出的隐藏状态以及可选的初始嵌入输出。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。
    在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
  • cross_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.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_layerstorch.FloatTensor元组的元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态,如果模型用于编码器-解码器设置,则相关。仅在config.is_decoder = True时相关。
    包含预先计算的隐藏状态(注意力块中的键和值),可以使用(参见past_key_values输入)加速顺序解码。

XLMRobertaForCausalLM 的前向方法,覆盖了__call__特殊方法。

尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoTokenizer, XLMRobertaForCausalLM, AutoConfig
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("roberta-base")
>>> config = AutoConfig.from_pretrained("roberta-base")
>>> config.is_decoder = True
>>> model = XLMRobertaForCausalLM.from_pretrained("roberta-base", config=config)
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> prediction_logits = outputs.logits


Transformers 4.37 中文文档(六十二)(3)https://developer.aliyun.com/article/1564098

相关文章
|
6月前
|
自然语言处理 PyTorch 算法框架/工具
Transformers 4.37 中文文档(四十一)(8)
Transformers 4.37 中文文档(四十一)
36 2
|
6月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(四十二)(6)
Transformers 4.37 中文文档(四十二)
42 5
|
6月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(四十二)(5)
Transformers 4.37 中文文档(四十二)
46 4
|
6月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(四十一)(7)
Transformers 4.37 中文文档(四十一)
35 2
|
6月前
|
XML 测试技术 数据格式
Transformers 4.37 中文文档(四十二)(4)
Transformers 4.37 中文文档(四十二)
42 3
|
6月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(四十二)(3)
Transformers 4.37 中文文档(四十二)
33 2
|
6月前
|
存储 自然语言处理 PyTorch
Transformers 4.37 中文文档(四十二)(2)
Transformers 4.37 中文文档(四十二)
71 1
|
6月前
|
自然语言处理 PyTorch 区块链
Transformers 4.37 中文文档(四十二)(1)
Transformers 4.37 中文文档(四十二)
94 1
|
6月前
|
缓存 自然语言处理 PyTorch
Transformers 4.37 中文文档(六十二)(5)
Transformers 4.37 中文文档(六十二)
20 0
|
6月前
|
机器学习/深度学习 存储 PyTorch
Transformers 4.37 中文文档(六十二)(1)
Transformers 4.37 中文文档(六十二)
25 0