Transformers 4.37 中文文档(三十三)4-37-中文文档-三十三-

2024-06-26 16:04:40 浏览数 (1)

原文:huggingface.co/docs/transformers

FLAN-T5

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

概述

FLAN-T5 发布在论文扩展指令微调语言模型中 - 这是 T5 的增强版本,已在多种任务中进行微调。

可以直接使用 FLAN-T5 权重,无需微调模型:

代码语言:javascript复制
>>> from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

>>> model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-t5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/flan-t5-small")

>>> inputs = tokenizer("A step by step recipe to make bolognese pasta:", return_tensors="pt")
>>> outputs = model.generate(**inputs)
>>> print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
['Pour a cup of bolognese into a large bowl and add the pasta']

FLAN-T5 包含与 T5 版本 1.1 相同的改进(有关模型改进的完整详情,请参见此处。)

Google 发布了以下变体:

  • google/flan-t5-small
  • google/flan-t5-base
  • google/flan-t5-large
  • google/flan-t5-xl
  • google/flan-t5-xxl。

原始检查点可以在此处找到。

有关所有 API 参考、代码示例和笔记本,请参阅 T5 的文档页面。有关 FLAN-T5 的训练和评估的更多详细信息,请参考模型卡片。

FLAN-UL2

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

概述

Flan-UL2 是基于 T5 架构的编码器解码器模型。它使用与去年早些时候发布的 UL2 模型相同的配置。它经过“Flan”提示调整和数据集收集进行微调。与Flan-T5类似,可以直接使用 FLAN-UL2 权重而无需微调模型:

根据原始博客,以下是显著的改进:

  • 原始的 UL2 模型只使用了 512 的感受野进行训练,这使得它对于大量 N-shot 提示不理想。
  • Flan-UL2 检查点使用 2048 的感受野,使其更适用于少样本上下文学习。
  • 原始的 UL2 模型还有模式切换令牌,这对于获得良好性能是相当必要的。然而,它们有点繁琐,因为这经常需要在推理或微调过程中进行一些更改。在这次更新/更改中,我们继续训练 UL2 20B 额外的 100k 步(使用小批量)来忘记“模式令牌”,然后应用 Flan 指令调整。这个 Flan-UL2 检查点不再需要模式令牌。Google 发布了以下变体:

原始检查点可以在这里找到。

在资源有限的设备上运行

该模型非常庞大(半精度约 40GB),因此如果您只想运行模型,请确保以 8 位加载您的模型,并使用device_map="auto"确保您没有任何 OOM 问题!

代码语言:javascript复制
>>> from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

>>> model = AutoModelForSeq2SeqLM.from_pretrained("google/flan-ul2", load_in_8bit=True, device_map="auto")
>>> tokenizer = AutoTokenizer.from_pretrained("google/flan-ul2")

>>> inputs = tokenizer("A step by step recipe to make bolognese pasta:", return_tensors="pt")
>>> outputs = model.generate(**inputs)
>>> print(tokenizer.batch_decode(outputs, skip_special_tokens=True))
['In a large skillet, brown the ground beef and onion over medium heat. Add the garlic']

请参考 T5 的文档页面获取 API 参考、提示、代码示例和笔记本。

FlauBERT

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/flaubert

概述

FlauBERT 模型是由 Hang Le 等人在论文FlauBERT:法语无监督语言模型预训练中提出的。它是使用掩码语言建模(MLM)目标(如 BERT)预训练的 Transformer 模型。

论文摘要如下:

语言模型已成为在许多不同自然语言处理(NLP)任务中实现最先进结果的关键步骤。利用当今大量可用的未标记文本,它们提供了一种有效的方式来预训练连续的词表示,可以在下游任务中进行微调,以及在句子级别上对其进行上下文化。这已经在英语中广泛证明了使用上下文化表示(Dai 和 Le,2015; Peters 等,2018; Howard 和 Ruder,2018; Radford 等,2018; Devlin 等,2019; Yang 等,2019b)。在本文中,我们介绍并分享 FlauBERT,这是一个在非常大型和异构的法语语料库上学习的模型。使用新的法国国家科学研究中心(CNRS)Jean Zay 超级计算机训练不同大小的模型。我们将我们的法语语言模型应用于各种 NLP 任务(文本分类、释义、自然语言推理、解析、词义消歧),并展示大多数时候它们优于其他预训练方法。FlauBERT 的不同版本以及用于下游任务的统一评估协议,称为 FLUE(法语语言理解评估),已经共享给研究社区,以进行进一步可重现的法语 NLP 实验。

此模型由formiel贡献。原始代码可以在这里找到。

提示:

  • 与 RoBERTa 一样,没有句子排序预测(只是在 MLM 目标上训练)。

资源

  • 文本分类任务指南
  • 标记分类任务指南
  • 问答任务指南
  • 掩码语言建模任务指南
  • 多选任务指南

FlaubertConfig

class transformers.FlaubertConfig

<来源>

代码语言:javascript复制
( pre_norm = False layerdrop = 0.0 vocab_size = 30145 emb_dim = 2048 n_layers = 12 n_heads = 16 dropout = 0.1 attention_dropout = 0.1 gelu_activation = True sinusoidal_embeddings = False causal = False asm = False n_langs = 1 use_lang_emb = True max_position_embeddings = 512 embed_init_std = 0.02209708691207961 layer_norm_eps = 1e-12 init_std = 0.02 bos_index = 0 eos_index = 1 pad_index = 2 unk_index = 3 mask_index = 5 is_encoder = True summary_type = 'first' summary_use_proj = True summary_activation = None summary_proj_to_labels = True summary_first_dropout = 0.1 start_n_top = 5 end_n_top = 5 mask_token_id = 0 lang_id = 0 pad_token_id = 2 bos_token_id = 0 **kwargs )

参数

  • pre_normbool可选,默认为False)— 是否在每层的注意力后应用层归一化之前还是之后应用前馈层(Vaswani 等人,Tensor2Tensor 用于神经机器翻译。2018)
  • layerdropfloat可选,默认为 0.0)— 训练期间丢弃层的概率(Fan 等人,使用结构化丢弃减少 Transformer 深度的需求。ICLR 2020)
  • vocab_sizeint可选,默认为 30145)— FlauBERT 模型的词汇量。定义了在调用 FlaubertModel 或 TFFlaubertModel 时可以表示的不同令牌数量。
  • emb_dimint可选,默认为 2048)— 编码器层和池化层的维度。
  • n_layerint可选,默认为 12)— Transformer 编码器中的隐藏层数量。
  • n_headint可选,默认为 16)— Transformer 编码器中每个注意力层的注意力头数。
  • dropoutfloat可选,默认为 0.1)— 嵌入层、编码器和池化器中所有全连接层的丢弃概率。
  • attention_dropoutfloat可选,默认为 0.1)— 注意机制的丢弃概率。
  • gelu_activationbool可选,默认为True)— 是否使用gelu激活而不是relu
  • sinusoidal_embeddingsbool可选,默认为False)— 是否使用正弦位置嵌入而不是绝对位置嵌入。
  • causalbool可选,默认为False) — 模型是否应该以因果方式行为。因果模型使用三角形注意掩码,以便只关注左侧上下文而不是双向上下文。
  • asmbool可选,默认为False)— 是否使用自适应对数 softmax 投影层而不是线性层进行预测。
  • n_langsint可选,默认为 1)— 模型处理的语言数量。对于单语模型,设置为 1。
  • use_lang_embbool可选,默认为True)— 是否使用语言嵌入。一些模型使用额外的语言嵌入,请参阅多语言模型页面以获取有关如何使用它们的信息。
  • max_position_embeddingsint可选,默认为 512)— 该模型可能会使用的最大序列长度。通常设置为一个较大的值以防万一(例如 512 或 1024 或 2048)。
  • embed_init_stdfloat可选,默认为 2048^-0.5)— 用于初始化嵌入矩阵的截断正态初始化器的标准差。
  • init_stdint可选,默认为 50257)— 用于初始化除嵌入矩阵之外的所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_epsfloat可选,默认为 1e-12)— 层归一化层使用的 epsilon。
  • bos_indexint可选,默认为 0)— 词汇表中句子开头标记的索引。
  • eos_indexint可选,默认为 1)— 词汇表中句子结束标记的索引。
  • pad_indexint可选,默认为 2)— 词汇表中填充标记的索引。
  • unk_indexint可选,默认为 3)— 词汇表中未知标记的索引。
  • mask_indexint可选,默认为 5)— 词汇表中掩码标记的索引。
  • is_encoder(bool, 可选,默认为True) — 初始化模型是否应该是 Transformer 编码器或解码器,如 Vaswani 等人所见。
  • summary_typestring可选,默认为“first”)— 在进行序列摘要时使用的参数。用于序列分类和多选模型。 必须是以下选项之一:
    • "last": 获取最后一个标记的隐藏状态(类似 XLNet)。
    • "first": 获取第一个标记的隐藏状态(类似 BERT)。
    • "mean": 获取所有标记的隐藏状态的平均值。
    • "cls_index": 提供一个分类标记位置的张量(类似 GPT/GPT-2)。
    • "attn": 目前未实现,使用多头注意力。
  • summary_use_projbool可选,默认为True) — 在进行序列摘要时使用的参数。用于序列分类和多选模型。 是否在向量提取后添加投影。
  • summary_activationstr可选)— 在进行序列摘要时使用的参数。用于序列分类和多选模型。 将输出传递给"tanh"以获得 tanh 激活,任何其他值将导致无激活。
  • summary_proj_to_labelsbool可选,默认为True)— 用于序列分类和多选模型。 投影输出应具有config.num_labelsconfig.hidden_size类。
  • summary_first_dropout (float, optional, 默认为 0.1) — 用于序列分类和多选模型。 在投影和激活后使用的丢弃比率。
  • start_n_top (int, optional, 默认为 5) — 用于 SQuAD 评估脚本。
  • end_n_top (int, optional, 默认为 5) — 用于 SQuAD 评估脚本。
  • mask_token_id (int, optional, 默认为 0) — 用于在 MLM 上下文中生成文本时识别掩码标记的与模型无关的参数。
  • lang_id (int, optional, 默认为 1) — 模型使用的语言 ID。在生成特定语言的文本时使用此参数。

这是用于存储 FlaubertModel 或 TFFlaubertModel 配置的配置类。它用于根据指定的参数实例化一个 FlauBERT 模型,定义模型架构。使用默认值实例化配置将产生类似于 FlauBERT flaubert/flaubert_base_uncased 架构的配置。

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

FlaubertTokenizer

class transformers.FlaubertTokenizer

< source >

代码语言:javascript复制
( vocab_file merges_file do_lowercase = False unk_token = '<unk>' bos_token = '<s>' sep_token = '</s>' pad_token = '<pad>' cls_token = '</s>' mask_token = '<special1>' additional_special_tokens = ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>'] lang2id = None id2lang = None **kwargs )

参数

  • vocab_file (str) — 词汇文件。
  • merges_file (str) — 合并文件。
  • do_lowercase (bool, optional, 默认为 False) — 控制小写。
  • unk_token (str, optional, 默认为 "<unk>") — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • bos_token (str, optional, 默认为 "<s>") — 在预训练期间使用的序列开始标记。可用作序列分类器标记。 在使用特殊标记构建序列时,这不是用于序列开头的标记。使用的标记是 cls_token
  • sep_token (str, optional, 默认为 "</s>") — 分隔符标记,在从多个序列构建序列时使用,例如用于序列分类的两个序列或用于问答的文本和问题。还用作使用特殊标记构建的序列的最后一个标记。
  • pad_token (str, optional, 默认为 "<pad>") — 用于填充的标记,例如在批处理不同长度的序列时使用。
  • cls_token (str, optional, 默认为 "</s>") — 用于进行序列分类时使用的分类器标记(对整个序列进行分类而不是每个标记进行分类)。在使用特殊标记构建时,它是序列的第一个标记。
  • mask_token (str, optional, 默认为 "<special1>") — 用于掩码值的标记。在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。
  • additional_special_tokens (List[str], optional, 默认为 ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']) — 附加特殊标记的列表。
  • lang2id (Dict[str, int], optional) — 将语言字符串标识符映射到其 ID 的字典。
  • id2lang (Dict[int, str], optional) — 将语言 ID 映射到其字符串标识符的字典。

构建一个 Flaubert 分词器。基于字节对编码。分词过程如下:

  • 摩西预处理和标记化。
  • 规范化所有输入文本。
  • 参数special_tokens和函数set_special_tokens可用于向词汇表添加额外的符号(如“classify”)。
  • 参数do_lowercase控制小写(对于预训练词汇表会自动设置)。

此标记器继承自 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 列表。

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

  • 单个序列:<s> X </s>
  • 序列对:<s> A </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]

根据给定的序列,列出 token 类型 ID 的列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。一个 XLM 序列

配对掩码的格式如下:

代码语言: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_1None,则此方法仅返回掩码的第一部分(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方法添加特殊标记时调用此方法。

PytorchHide Pytorch 内容

FlaubertModel

class transformers.FlaubertModel

<来源>

代码语言:javascript复制
( config )
forward

<来源>

代码语言:javascript复制
( input_ids: Optional = None attention_mask: Optional = None langs: Optional = None token_type_ids: Optional = None position_ids: Optional = None lengths: Optional = None cache: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutput 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 用于被 掩盖 的标记。

    注意力蒙版是什么?

  • 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 是什么?
  • lengths (torch.LongTensor,形状为 (batch_size,)可选) — 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用 attention_mask 来获得相同的结果(请参见上文),这里保留是为了兼容性。索引选择在 [0, ..., input_ids.size(-1)]
  • cache (Dict[str, torch.FloatTensor]可选) — 包含预计算的隐藏状态(由模型计算的注意力块中的键和值)的字符串到 torch.FloatTensor 的字典。可用于加速顺序解码。在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask (torch.FloatTensor,形状为 (num_heads,)(num_layers, num_heads)可选) — 用于使自注意力模块的选定头部失效的蒙版。蒙版值选择在 [0, 1] 中:
    • 1 表示头部未被 掩盖
    • 0 表示头部被 掩盖
  • inputs_embeds (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)可选) — 可选地,您可以直接传递一个嵌入表示,而不是传递 input_ids。如果您想要更多控制权来将 input_ids 索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回一个 ModelOutput 而不是一个普通的元组。

返回

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

一个 transformers.modeling_outputs.BaseModelOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含各种元素,具体取决于配置(FlaubertConfig)和输入。

  • last_hidden_state (torch.FloatTensor,形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。
  • hidden_states (tuple(torch.FloatTensor)可选,当传递了 output_hidden_states=True 或当 config.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 后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, FlaubertModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = FlaubertModel.from_pretrained("flaubert/flaubert_base_cased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state

FlaubertWithLMHeadModel

class transformers.FlaubertWithLMHeadModel

<来源>

代码语言:javascript复制
( config )

参数

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

Flaubert 模型变压器,顶部带有语言建模头(线性层,权重与输入嵌入绑定)。

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

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

forward

<来源>

代码语言:javascript复制
( input_ids: Optional = None attention_mask: Optional = None langs: Optional = None token_type_ids: Optional = None position_ids: Optional = None lengths: Optional = None cache: 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.MaskedLMOutput or tuple(torch.FloatTensor)

参数

  • input_idstorch.LongTensor,形状为(batch_size, sequence_length))—词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。 输入 ID 是什么?
  • attention_masktorch.FloatTensor,形状为(batch_size, sequence_length)可选)—避免在填充标记索引上执行注意力的掩码。选择的掩码值为[0, 1]
    • 对于未被“掩盖”的标记为 1,
    • 对于被“掩盖”的标记为 0。

    注意力掩码是什么?

  • token_type_idstorch.LongTensor,形状为(batch_size, sequence_length)可选)—段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]中:
    • 0 对应于句子 A标记,
    • 1 对应于句子 B标记。

    令牌类型 ID 是什么?

  • position_idstorch.LongTensor,形状为(batch_size, sequence_length)可选)—输入序列标记的每个位置的位置嵌入的索引。在范围[0, config.max_position_embeddings - 1]中选择。 位置 ID 是什么?
  • lengths (torch.LongTensor,形状为(batch_size,)optional) — 每个句子的长度,可用于避免在填充令牌索引上执行注意力。您也可以使用attention_mask获得相同的结果(请参见上文),这里保留以保持兼容性。在[0, ..., input_ids.size(-1)]中选择的索引:
  • cache (Dict[str, torch.FloatTensor]optional) — 包含预先计算的隐藏状态(由模型计算的注意力块中的键和值)的字符串到torch.FloatTensor的字典。可用于加速顺序解码。在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask (torch.FloatTensor,形状为(num_heads,)(num_layers, num_heads)optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]中选择:
    • 1 表示头部未被掩码,
    • 0 表示头部被掩码。
  • inputs_embeds (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
  • output_hidden_states (booloptional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。
  • labels (torch.LongTensor,形状为(batch_size, sequence_length)optional) — 用于语言建模的标签。请注意,模型内部会对标签进行偏移,即您可以设置labels = input_ids。在[-100, 0, ..., config.vocab_size]中选择索引。所有设置为-100的标签将被忽略(掩码),损失仅计算在[0, ..., config.vocab_size]中的标签。

返回

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

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

  • loss (torch.FloatTensor,形状为(1,)optional,当提供labels时返回) — 掩码语言建模(MLM)损失。
  • logits (torch.FloatTensor,形状为(batch_size, sequence_length, config.vocab_size)) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。
  • hidden_states (tuple(torch.FloatTensor)optional,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型具有嵌入层,则为嵌入的输出 每个层的输出)。 每层输出的模型的隐藏状态加上可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor)optional,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

FlaubertWithLMHeadModel 的前向方法重写了 __call__ 特殊方法。

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, FlaubertWithLMHeadModel
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = FlaubertWithLMHeadModel.from_pretrained("flaubert/flaubert_base_cased")

>>> inputs = tokenizer("The capital of France is <special1>.", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # retrieve index of <special1>
>>> 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)

>>> labels = tokenizer("The capital of France is Paris.", return_tensors="pt")["input_ids"]
>>> # mask labels of non-<special1> tokens
>>> labels = torch.where(inputs.input_ids == tokenizer.mask_token_id, labels, -100)

>>> outputs = model(**inputs, labels=labels)

FlaubertForSequenceClassification

class transformers.FlaubertForSequenceClassification

<来源>

代码语言:javascript复制
( config )

参数

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

在顶部有一个用于序列分类/回归的 Flaubert 模型(在汇总输出的顶部有一个线性层),例如用于 GLUE 任务。

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

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

forward

<来源>

代码语言:javascript复制
( input_ids: Optional = None attention_mask: Optional = None langs: Optional = None token_type_ids: Optional = None position_ids: Optional = None lengths: Optional = None cache: 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 表示被掩码的标记。

    什么是注意力掩码?

  • 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?
  • lengths (torch.LongTensor,形状为 (batch_size,)可选) — 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用 attention_mask 获得相同的结果(见上文),这里保留是为了兼容性。索引在 [0, ..., input_ids.size(-1)] 中选择:
  • cacheDict[str, torch.FloatTensor]可选)- 包含由模型计算的预计算隐藏状态(注意力块中的键和值)的字符串到torch.FloatTensor的字典对象(请参见下面的cache输出)。可用于加速顺序解码。在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • 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 而不是普通元组。
  • labels(形状为(batch_size,)torch.LongTensor可选)- 用于计算序列分类/回归损失的标签。索引应在[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=Falseconfig.return_dict=False,则包括根据配置(FlaubertConfig)和输入而异的各种元素。

  • loss(形状为(1,)torch.FloatTensor可选,当提供labels时返回)- 分类(或如果config.num_labels==1则为回归)损失。
  • logits(形状为(batch_size, config.num_labels)torch.FloatTensor)- 分类(或如果config.num_labels==1则为回归)得分(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 之后,用于计算自注意力头中的加权平均值。

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

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

单标签分类的示例:

代码语言:javascript复制
>>> import torch
>>> from transformers import AutoTokenizer, FlaubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_cased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_cased", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss

多标签分类的示例:

代码语言:javascript复制
>>> import torch
>>> from transformers import AutoTokenizer, FlaubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_cased", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = FlaubertForSequenceClassification.from_pretrained(
...     "flaubert/flaubert_base_cased", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

FlaubertForMultipleChoice

class transformers.FlaubertForMultipleChoice

<来源>

代码语言:javascript复制
( config *inputs **kwargs )

参数

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

Flaubert 模型在顶部具有多选分类头(池化输出上的线性层和 softmax),例如用于 RocStories/SWAG 任务。

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

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

forward

<来源>

代码语言:javascript复制
( input_ids: Optional = None attention_mask: Optional = None langs: Optional = None token_type_ids: Optional = None position_ids: Optional = None lengths: Optional = None cache: 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(形状为(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?
  • lengths(形状为(batch_size,)torch.LongTensor可选)— 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用attention_mask获得相同的结果(见上文),这里保留以保持兼容性。索引选择在[0, ..., input_ids.size(-1)]之间:
  • cacheDict[str, torch.FloatTensor]可选)— 包含由模型计算的预计算隐藏状态(注意力块中的键和值)的字符串到torch.FloatTensor的字典。可用于加速顺序解码。在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask(形状为(num_heads,)(num_layers, num_heads)torch.FloatTensor可选)— 用于使自注意力模块的选定头部失效的掩码。掩码值选在[0, 1]范围内:
    • 1 表示头部未被masked
    • 0 表示头部被masked
  • 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 而不是一个普通元组。
  • labels(形状为(batch_size,)torch.LongTensor可选)— 用于计算多项选择分类损失的标签。索引应在[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时)包含不同的元素,取决于配置(FlaubertConfig)和输入。

  • loss(形状为*(1,)*的torch.FloatTensor可选,当提供labels时返回)— 分类损失。
  • logits(形状为(batch_size, num_choices)torch.FloatTensor)— num_choices是输入张量的第二维。(参见上面的input_ids)。 分类得分(SoftMax 之前)。
  • hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=True或者config.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出的输出 每层的输出)。 模型在每层输出的隐藏状态加上可选的初始嵌入输出。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=True或者config.output_attentions=True时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, FlaubertForMultipleChoice
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = FlaubertForMultipleChoice.from_pretrained("flaubert/flaubert_base_cased")

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

FlaubertForTokenClassification

class transformers.FlaubertForTokenClassification

<来源>

代码语言:javascript复制
( config )

参数

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

Flaubert 模型,顶部带有一个标记分类头(隐藏状态输出的顶部线性层),例如用于命名实体识别(NER)任务。

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

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

forward

<来源>

代码语言:javascript复制
( input_ids: Optional = None attention_mask: Optional = None langs: Optional = None token_type_ids: Optional = None position_ids: Optional = None lengths: Optional = None cache: 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(形状为(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?
  • lengths(形状为(batch_size,)torch.LongTensor可选)— 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用attention_mask获得相同的结果(见上文),这里保留以保持兼容性。索引选择在[0, ..., input_ids.size(-1)]中:
  • cacheDict[str, torch.FloatTensor]可选)— 包含由模型计算的预计算隐藏状态(注意力块中的键和值)的torch.FloatTensor字符串字典(请参见下面的cache输出)。可用于加速顺序解码。在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • 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 而不是普通元组。
  • 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=Falseconfig.return_dict=False时)包含根据配置(FlaubertConfig)和输入的各种元素。

  • loss(形状为(1,)torch.FloatTensor可选,当提供labels时返回)— 分类损失。
  • logits(形状为(batch_size, sequence_length, config.num_labels)torch.FloatTensor)— 分类分数(SoftMax 之前)。
  • hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)— torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出 每个层的输出)的形状为(batch_size, sequence_length, hidden_size)。 模型在每个层的输出以及可选的初始嵌入输出的隐藏状态。
  • attentionstuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)— torch.FloatTensor元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, FlaubertForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = FlaubertForTokenClassification.from_pretrained("flaubert/flaubert_base_cased")

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

FlaubertForQuestionAnsweringSimple

class transformers.FlaubertForQuestionAnsweringSimple

< source >

代码语言:javascript复制
( config )

参数

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

Flaubert 模型在顶部具有一个用于提取式问答任务(如 SQuAD)的跨度分类头(在隐藏状态输出的顶部有一个线性层,用于计算 span start logitsspan end logits)。

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

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

forward

< source >

代码语言:javascript复制
( input_ids: Optional = None attention_mask: Optional = None langs: Optional = None token_type_ids: Optional = None position_ids: Optional = None lengths: Optional = None cache: 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.modeling_outputs.QuestionAnsweringModelOutput 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?
  • lengths (torch.LongTensor of shape (batch_size,), optional) — 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用 attention_mask 来获得相同的结果(见上文),这里保留是为了兼容性。所选索引范围为 [0, ..., input_ids.size(-1)]:
  • cache (Dict[str, torch.FloatTensor], optional) — 包含由模型计算的预计算隐藏状态(关键和值在注意力块中)的 torch.FloatTensor 字典字符串(请参见下面的 cache 输出)。可用于加速顺序解码。在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选择在 [0, 1]:
    • 1 表示头部未被遮蔽,
    • 0 表示头部被遮蔽。
  • inputs_embeds (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选) — 可选地,可以直接传递嵌入表示而不是传递input_ids。如果您想要更多控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通元组。
  • start_positions (torch.LongTensor,形状为(batch_size,)可选) — 用于计算标记跨度起始位置的位置(索引)的标签。位置被夹紧到序列的长度(sequence_length)。序列外的位置不会被考虑在内计算损失。
  • end_positions (torch.LongTensor,形状为(batch_size,)可选) — 用于计算标记跨度结束位置的位置(索引)的标签。位置被夹紧到序列的长度(sequence_length)。序列外的位置不会被考虑在内计算损失。

返回

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

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

  • loss (torch.FloatTensor,形状为(1,)可选,当提供labels时返回) — 总跨度提取损失是起始位置和结束位置的交叉熵之和。
  • start_logits (torch.FloatTensor,形状为(batch_size, sequence_length)) — 跨度起始分数(SoftMax 之前)。
  • end_logits (torch.FloatTensor,形状为(batch_size, sequence_length)) — 跨度结束分数(SoftMax 之前)。
  • hidden_states (tuple(torch.FloatTensor), 可选, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出加上每层的输出)。 模型在每一层输出处的隐藏状态以及可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组(每层一个)。 注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, FlaubertForQuestionAnsweringSimple
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = FlaubertForQuestionAnsweringSimple.from_pretrained("flaubert/flaubert_base_cased")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index   1]

>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss

FlaubertForQuestionAnswering

class transformers.FlaubertForQuestionAnswering

< source >

代码语言:javascript复制
( config )
forward

< source >

代码语言:javascript复制
( input_ids: Optional = None attention_mask: Optional = None langs: Optional = None token_type_ids: Optional = None position_ids: Optional = None lengths: Optional = None cache: Optional = None head_mask: Optional = None inputs_embeds: Optional = None start_positions: Optional = None end_positions: Optional = None is_impossible: Optional = None cls_index: Optional = None p_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.flaubert.modeling_flaubert.FlaubertForQuestionAnsweringOutput or tuple(torch.FloatTensor)

参数

  • input_ids(形状为(batch_size, sequence_length)torch.LongTensor)— 词汇表中输入序列标记的索引。

返回

transformers.models.flaubert.modeling_flaubert.FlaubertForQuestionAnsweringOutputtuple(torch.FloatTensor)

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

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

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

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

使用SquadHead的问答模型输出的基类。

例子:

代码语言:javascript复制
>>> from transformers import XLMTokenizer, XLMForQuestionAnswering
>>> import torch

>>> tokenizer = XLMTokenizer.from_pretrained("xlm-mlm-en-2048")
>>> model = XLMForQuestionAnswering.from_pretrained("xlm-mlm-en-2048")

>>> input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(
...     0
... )  # Batch size 1
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])

>>> outputs = model(input_ids, start_positions=start_positions, end_positions=end_positions)
>>> loss = outputs.loss

TensorFlow 隐藏 TensorFlow 内容

TFFlaubertModel

class transformers.TFFlaubertModel

< source >

代码语言:javascript复制
( config *inputs **kwargs )

参数

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

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

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

这个模型也是一个 tf.keras.Model 子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有相关信息。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 所有输入都作为关键字参数(类似于 PyTorch 模型),或者
  • 所有输入都作为第一个位置参数的列表、元组或字典。

支持第二种格式的原因是,Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于有了这种支持,当使用 model.fit() 等方法时,您应该可以“只需工作” - 只需以 model.fit() 支持的任何格式传递您的输入和标签!但是,如果您想在 Keras 方法之外使用第二种格式,例如在使用 Keras Functional API 创建自己的层或模型时,有三种可能性可以用来收集第一个位置参数中的所有输入张量:

  • 一个仅包含 input_ids 的单个张量,没有其他内容:model(input_ids)
  • 一个长度不同的列表,其中包含一个或多个输入张量,按照文档字符串中给定的顺序:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个包含与文档字符串中给定的输入名称相关联的一个或多个输入张量的字典:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心这些内容,因为您可以像对待任何其他 Python 函数一样传递输入!

call

<来源>

代码语言:javascript复制
( input_ids: np.ndarray | tf.Tensor | None = None attention_mask: np.ndarray | tf.Tensor | None = None langs: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None lengths: np.ndarray | tf.Tensor | None = None cache: Optional[Dict[str, tf.Tensor]] = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFBaseModelOutput or tuple(tf.Tensor)

参数

  • input_ids (Numpy arraytf.Tensor,形状为 (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。 有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。 什么是输入 ID?
  • attention_mask (Numpy arraytf.Tensor,形状为 (batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行注意力的掩码。 选择在 [0, 1] 中的掩码值:
    • 对于未被屏蔽的标记,为 1
    • 对于被屏蔽的标记,为 0

    什么是注意力掩码?

  • langs (tf.TensorNumpy array,形状为 (batch_size, sequence_length)可选) — 用于指示输入中每个标记的语言的并行标记序列。 索引是语言 ID,可以通过模型配置中提供的两个转换映射从语言名称中获取(仅适用于多语言模型)。 更确切地说,语言名称到语言 ID 映射在 model.config.lang2id 中(这是一个字符串到整数的字典),语言 ID 到语言名称 映射在 model.config.id2lang 中(整数到字符串的字典)。 请参阅多语言文档中详细的使用示例。
  • token_type_ids (tf.TensorNumpy array,形状为 (batch_size, sequence_length)可选) — 段标记索引,指示输入的第一部分和第二部分。 索引在 [0, 1] 中选择:
    • 0 对应于 句子 A 标记,
    • 1 对应于 句子 B 标记。

    什么是标记类型 ID?

  • position_ids (tf.TensorNumpy array,形状为 (batch_size, sequence_length)可选) — 每个输入序列标记在位置嵌入中的位置的索引。 选择在范围 [0, config.max_position_embeddings - 1] 中。 什么是位置 ID?
  • lengths (tf.TensorNumpy array,形状为(batch_size,)可选) — 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用attention_mask获得相同的结果(见上文),这里保留以保持兼容性。所选索引在[0, ..., input_ids.size(-1)]中:
  • cache (Dict[str, tf.Tensor]可选) — 包含由模型计算的预计算隐藏状态(注意力块中的键和值)的字符串到tf.FloatTensor的字典。可用于加速顺序解码。 字典对象将在前向传递期间就地修改以添加新计算的隐藏状态。
  • head_mask (Numpy array或形状为(num_heads,)(num_layers, num_heads)tf.Tensor可选) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]中选择:
    • 1表示头部未被掩码
    • 0表示头部被掩码
  • inputs_embeds (形状为(batch_size, sequence_length, hidden_size)tf.Tensor,*可选*) — 可选地,您可以选择直接传递嵌入表示而不是传递input_ids。如果您想要更多控制如何将input_ids`索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。
  • output_attentions (bool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。
  • return_dict (bool可选) — 是否返回一个 ModelOutput 而不是一个普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。
  • training (bool可选,默认为False) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。

返回

transformers.modeling_tf_outputs.TFBaseModelOutput 或tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFBaseModelOutput 或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含根据配置(FlaubertConfig)和输入的各种元素。

  • last_hidden_state (形状为(batch_size, sequence_length, hidden_size)tf.Tensor`) — 模型最后一层的隐藏状态序列。
  • hidden_states (tuple(tf.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 一个用于每个层的输出)。 模型在每个层的输出以及初始嵌入输出的隐藏状态。
  • attentions (tuple(tf.Tensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每个层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, TFFlaubertModel
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = TFFlaubertModel.from_pretrained("flaubert/flaubert_base_cased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)

>>> last_hidden_states = outputs.last_hidden_state

TFFlaubertWithLMHeadModel

class transformers.TFFlaubertWithLMHeadModel

<来源>

代码语言:javascript复制
( config *inputs **kwargs )

参数

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

Flaubert 模型变压器,顶部带有语言建模头(线性层,其权重与输入嵌入绑定)。

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

此模型也是tf.keras.Model的子类。将其用作常规 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有信息。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或者
  • 将所有输入作为列表、元组或字典的第一个位置参数。

支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,在使用model.fit()等方法时,应该“只需工作” - 只需传递您的输入和标签,以任何model.fit()支持的格式!但是,如果您想在 Keras 方法之外使用第二种格式,例如在使用 KerasFunctionalAPI 创建自己的层或模型时,有三种可能性可用于收集第一个位置参数中的所有输入张量:

  • 只有一个张量,其中只有input_ids而没有其他内容:model(input_ids)
  • 一个长度可变的列表,其中包含一个或多个与文档字符串中给定的顺序相对应的输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个字典,其中包含一个或多个与文档字符串中给定的输入名称相关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心任何这些,因为您可以像对待任何其他 Python 函数一样传递输入!

call

<来源>

代码语言:javascript复制
( input_ids: np.ndarray | tf.Tensor | None = None attention_mask: np.ndarray | tf.Tensor | None = None langs: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None lengths: np.ndarray | tf.Tensor | None = None cache: Optional[Dict[str, tf.Tensor]] = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) → export const metadata = 'undefined';transformers.models.flaubert.modeling_tf_flaubert.TFFlaubertWithLMHeadModelOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)Numpy数组或tf.Tensor)—词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。 输入 ID 是什么?
  • attention_mask(形状为(batch_size, sequence_length)Numpy数组或tf.Tensor可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]范围内:
    • 1表示未被屏蔽的标记,
    • 0表示被屏蔽的标记。

    注意掩码是什么?

  • langs(形状为(batch_size, sequence_length)tf.TensorNumpy数组,可选)— 用于指示输入中每个标记的语言的并行标记序列。语言 ID 可以通过模型配置中提供的两个转换映射从语言名称中获取(仅适用于多语言模型)。更准确地说,语言名称到语言 ID映射在model.config.lang2id中(这是一个字符串到整数的字典),语言 ID 到语言名称映射在model.config.id2lang中(整数到字符串的字典)。 在多语言文档中详细说明了用法示例。
  • token_type_ids(形状为(batch_size, sequence_length)tf.TensorNumpy数组,可选)— 指示输入的第一部分和第二部分的段标记索引。索引选定在[0, 1]范围内:
    • 0对应于句子 A的标记,
    • 1对应于句子 B的标记。

    令牌类型 ID 是什么?

  • position_ids(形状为(batch_size, sequence_length)tf.TensorNumpy数组,可选)— 每个输入序列标记在位置嵌入中的位置索引。选定范围在[0, config.max_position_embeddings - 1]内。 位置 ID 是什么?
  • lengths(形状为(batch_size,)tf.TensorNumpy数组,可选)— 每个句子的长度,可用于避免在填充标记索引上执行注意力。您还可以使用attention_mask获得相同的结果(请参见上文),这里保留以确保兼容性。选定的索引在[0, ..., input_ids.size(-1)]内:
  • cacheDict[str, tf.Tensor]可选)— 包含由模型计算的预计算隐藏状态(注意力块中的键和值)的字符串到tf.FloatTensor的字典。可用于加速顺序解码。 在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask(形状为(num_heads,)(num_layers, num_heads)Numpy数组或tf.Tensor可选)— 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]范围内:
    • 1表示头部未被屏蔽,
    • 0表示被屏蔽的头部。
  • inputs_embeds(形状为(batch_size, sequence_length, hidden_size)tf.Tensor可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您希望更好地控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。
  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。
  • return_dictbool可选)— 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。
  • trainingbool可选,默认为False)- 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。

返回

transformers.models.flaubert.modeling_tf_flaubert.TFFlaubertWithLMHeadModelOutputtuple(tf.Tensor)

一个transformers.models.flaubert.modeling_tf_flaubert.TFFlaubertWithLMHeadModelOutput或一个tf.Tensor元组(如果传递return_dict=False或当config.return_dict=False时)包含根据配置(FlaubertConfig)和输入的各种元素。

  • logits(形状为(batch_size, sequence_length, config.vocab_size)tf.Tensor)- 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。
  • hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 一个用于每层的输出)。 每层输出的隐藏状态加上初始嵌入输出。
  • attentionstuple(tf.Tensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, TFFlaubertWithLMHeadModel
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = TFFlaubertWithLMHeadModel.from_pretrained("flaubert/flaubert_base_cased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> logits = outputs.logits

TFFlaubertForSequenceClassification

class transformers.TFFlaubertForSequenceClassification

< source >

代码语言:javascript复制
( config *inputs **kwargs )

参数

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

Flaubert 模型在顶部具有序列分类/回归头(在池化输出的顶部有一个线性层),例如用于 GLUE 任务。

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

此模型也是tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有事项。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于有了这种支持,当使用model.fit()等方法时,您应该可以“轻松”地工作 - 只需以model.fit()支持的任何格式传递您的输入和标签!但是,如果您想在 Keras 方法之外使用第二种格式,比如在使用 KerasFunctional API 创建自己的层或模型时,有三种可能性可以用来收集第一个位置参数中的所有输入张量:

  • 一个仅包含input_ids的单个张量,没有其他内容:model(input_ids)
  • 一个长度可变的列表,其中包含一个或多个按照文档字符串中给定的顺序的输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个字典,其中包含一个或多个与文档字符串中给定的输入名称相关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您不需要担心这些问题,因为您可以像将输入传递给任何其他 Python 函数一样传递输入!

call

<来源>

代码语言:javascript复制
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None langs: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None lengths: np.ndarray | tf.Tensor | None = None cache: Optional[Dict[str, tf.Tensor]] = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: bool = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFSequenceClassifierOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)Numpy 数组tf.Tensor) - 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。 输入 ID 是什么?
  • attention_mask(形状为(batch_size, sequence_length)Numpy 数组tf.Tensor可选) - 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]中:
    • 对于未被掩码的标记为1
    • 对于被掩码的标记为0

    注意力掩码是什么?

  • langs(形状为(batch_size, sequence_length)tf.TensorNumpy 数组可选) - 用于指示输入中每个标记的语言的并行标记序列。索引是语言 ID,可以通过模型配置中提供的两个转换映射从语言名称中获取(仅适用于多语言模型)。更确切地说,语言名称到语言 ID映射在model.config.lang2id中(这是一个字符串到整数的字典),语言 ID 到语言名称映射在model.config.id2lang中(整数到字符串的字典)。 请参阅多语言文档中详细的使用示例。
  • token_type_ids(形状为(batch_size, sequence_length)tf.TensorNumpy 数组可选) - 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]中:
    • 0对应于句子 A标记,
    • 1对应于句子 B标记。

    令牌类型 ID 是什么?

  • position_ids(形状为(batch_size, sequence_length)tf.TensorNumpy 数组可选) - 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]。 位置 ID 是什么?
  • lengths (tf.Tensor或形状为(batch_size,)Numpy数组,optional) — 每个句子的长度,可用于避免在填充令牌索引上执行注意力。您也可以使用attention_mask获得相同的结果(请参见上文),这里保留以确保兼容性。在[0, ..., input_ids.size(-1)]中选择的索引:
  • cache (Dict[str, tf.Tensor], optional) — 包含预计算的隐藏状态(由模型计算的注意力块中的键和值)的字符串到tf.FloatTensor的字典。可用于加速顺序解码。 在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask (Numpy数组或形状为(num_heads,)(num_layers, num_heads)tf.Tensoroptional) — 用于使自注意力模块的选定头部失效的掩码。掩码值在[0, 1]中选择:
    • 1表示头部是not masked
    • 0表示头部是masked
  • inputs_embeds (tf.Tensor,形状为(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 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。
  • training (bool, optional, 默认为False) — 是否在训练模式下使用模型(某些模块如 dropout 模块在训练和评估之间有不同的行为)。
  • labels (tf.Tensor,形状为(batch_size,)optional) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]中。如果config.num_labels == 1,则计算回归损失(均方损失),如果config.num_labels > 1,则计算分类损失(交叉熵)。

返回

transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False)包含各种元素,取决于配置(FlaubertConfig)和输入。

  • loss (tf.Tensor,形状为(batch_size, )optional,当提供labels时返回) — 分类(如果config.num_labels==1则为回归)损失。
  • logits (tf.Tensor,形状为(batch_size, config.num_labels)) — 分类(如果config.num_labels==1则为回归)得分(SoftMax 之前)。
  • hidden_states (tuple(tf.Tensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 一个用于每个层的输出)。 每层输出的模型隐藏状态加上初始嵌入输出。
  • attentionstuple(tf.Tensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每层一个)。 在自注意力头中用于计算加权平均值的注意力 softmax 之后的注意力权重。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, TFFlaubertForSequenceClassification
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = TFFlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_cased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")

>>> logits = model(**inputs).logits

>>> predicted_class_id = int(tf.math.argmax(logits, axis=-1)[0])
代码语言:javascript复制
>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = TFFlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_cased", num_labels=num_labels)

>>> labels = tf.constant(1)
>>> loss = model(**inputs, labels=labels).loss

TFFlaubertForMultipleChoice

class transformers.TFFlaubertForMultipleChoice

<来源>

代码语言:javascript复制
( config *inputs **kwargs )

参数

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

在顶部带有多选分类头的 Flaubert 模型(池化输出上方的线性层和 softmax),例如用于 RocStories/SWAG 任务。

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

此模型还是一个tf.keras.Model子类。将其用作常规 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有信息。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(如 PyTorch 模型),或
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于有此支持,当使用model.fit()等方法时,应该可以“正常工作” - 只需传递您的输入和标签,以任何model.fit()支持的格式!但是,如果您想在 Keras 方法之外使用第二种格式,例如在使用 KerasFunctionalAPI 创建自己的层或模型时,您可以使用三种可能性来收集所有输入张量放在第一个位置参数中:

  • 只有一个input_ids张量,没有其他内容:model(input_ids)
  • 一个长度可变的列表,其中包含一个或多个按照文档字符串中给定顺序的输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个字典,其中包含一个或多个与文档字符串中给定输入名称相关联的输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心任何这些,因为您可以像对待任何其他 Python 函数一样传递输入!

call

<来源>

代码语言:javascript复制
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None langs: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None lengths: np.ndarray | tf.Tensor | None = None cache: Optional[Dict[str, tf.Tensor]] = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: bool = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput or tuple(tf.Tensor)

参数

  • input_ids (Numpy array or tf.Tensor of shape (batch_size, sequence_length)) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。 什么是输入 ID?
  • attention_mask (Numpy array or tf.Tensor of shape (batch_size, sequence_length), optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]中:
    • 对于未被屏蔽的标记,1
    • 对于被屏蔽的标记,0

    什么是注意力掩码?

  • langs (tf.Tensor or Numpy array of shape (batch_size, sequence_length), optional) — 用于指示输入中每个标记的语言的并行标记序列。索引是语言 ID,可以通过模型配置中提供的两个转换映射从语言名称中获取(仅适用于多语言模型)。更准确地说,语言名称到语言 ID映射在model.config.lang2id中(这是一个字符串到整数的字典),语言 ID 到语言名称映射在model.config.id2lang中(整数到字符串的字典)。 请参阅多语言文档中详细的使用示例。
  • token_type_ids (tf.Tensor or Numpy array of shape (batch_size, sequence_length), optional) — 段标记索引,用于指示输入的第一部分和第二部分。索引在[0, 1]中选择:
    • 0对应于句子 A标记,
    • 1对应于句子 B标记。

    什么是标记类型 ID?

  • position_ids (tf.Tensor or Numpy array of shape (batch_size, sequence_length), optional) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]中选择。 什么是位置 ID?
  • lengths (tf.Tensor or Numpy array of shape (batch_size,), optional) — 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用attention_mask获得相同的结果(请参见上文),这里保留以保持兼容性。选择的索引在[0, ..., input_ids.size(-1)]中:
  • cache (Dict[str, tf.Tensor], optional) — 包含预先计算的隐藏状态(键和值在注意力块中)的字符串到tf.FloatTensor的字典,由模型计算(参见下面的cache输出)。可用于加速顺序解码。 在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask (Numpy array or tf.Tensor of shape (num_heads,) or (num_layers, num_heads), optional) — 用于使自注意力模块中的选定头部失效的掩码。掩码值选择在[0, 1]中:
    • 1表示头部未被屏蔽,
    • 0表示头部被屏蔽。
  • inputs_embeds (tf.Tensor of shape (batch_size, sequence_length, hidden_size), optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您希望更多地控制如何将input_ids索引转换为相关向量,而不是使用模型内部的嵌入查找矩阵,这将非常有用。
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回的张量中的attentions。此参数仅在急切模式下可用,在图模式中将使用配置中的值。
  • output_hidden_statesbool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states。此参数仅在急切模式下使用,在图模式下将使用配置中的值。
  • return_dictbool可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。
  • trainingbool可选,默认为False) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。

返回

transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput 或tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFMultipleChoiceModelOutput 或一个tf.Tensor元组(如果传递了return_dict=False或当config.return_dict=False时)包括根据配置(FlaubertConfig)和输入的各种元素。

  • loss(形状为*(batch_size, )*的tf.Tensor可选,当提供labels时返回) — 分类损失。
  • logits(形状为(batch_size, num_choices)tf.Tensor) — num_choices是输入张量的第二维度。(参见上面的input_ids)。 SoftMax 之前的分类分数。
  • hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 一个用于每个层的输出)。 每个层的模型的隐藏状态加上初始嵌入输出。
  • attentionstuple(tf.Tensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每个层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, TFFlaubertForMultipleChoice
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = TFFlaubertForMultipleChoice.from_pretrained("flaubert/flaubert_base_cased")

>>> 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="tf", padding=True)
>>> inputs = {k: tf.expand_dims(v, 0) for k, v in encoding.items()}
>>> outputs = model(inputs)  # batch size is 1

>>> # the linear classifier still needs to be trained
>>> logits = outputs.logits

TFFlaubertForTokenClassification

class transformers.TFFlaubertForTokenClassification

<来源>

代码语言:javascript复制
( config *inputs **kwargs )

参数

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

在顶部带有标记分类头的 Flaubert 模型(隐藏状态输出顶部的线性层),例如用于命名实体识别(NER)任务。

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

此模型还是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有内容。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,当将输入传递给模型和层时,Keras 方法更喜欢这种格式。由于有了这种支持,当使用model.fit()等方法时,应该可以“正常工作” - 只需以model.fit()支持的任何格式传递输入和标签即可!但是,如果您想在 Keras 方法之外使用第二种格式,比如在使用 KerasFunctionalAPI 创建自己的层或模型时,有三种可能性可以用来收集所有输入张量在第一个位置参数中:

  • 仅使用input_ids一个张量,没有其他内容:model(input_ids)
  • 一个变长列表,其中包含一个或多个输入张量,按照文档字符串中给定的顺序:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个字典,其中包含与文档字符串中给定的输入名称相关联的一个或多个输入张量:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心这些内容,因为您可以像对待其他 Python 函数一样传递输入!

call

< source >

代码语言:javascript复制
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None langs: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None lengths: np.ndarray | tf.Tensor | None = None cache: Optional[Dict[str, tf.Tensor]] = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: bool = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFTokenClassifierOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)Numpy数组或tf.Tensor)- 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call()和 PreTrainedTokenizer.encode()。 什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)Numpy数组或tf.Tensor可选)- 用于避免在填充标记索引上执行注意力的掩码。选择在[0, 1]中的掩码值:
    • 对于未被masked的标记,使用1
    • 对于被masked的标记,使用0

    什么是注意力掩码?

  • langs(形状为(batch_size, sequence_length)tf.TensorNumpy数组,可选)- 用于指示输入中每个标记的语言的并行标记序列。索引是语言 ID,可以通过模型配置中提供的两个转换映射从语言名称中获取(仅适用于多语言模型)。更准确地说,语言名称到语言 ID映射在model.config.lang2id中(这是一个字符串到整数的字典),语言 ID 到语言名称映射在model.config.id2lang中(整数到字符串的字典)。 请参阅多语言文档中详细的用法示例。
  • token_type_ids (tf.TensorNumpy array of shape (batch_size, sequence_length), optional) — 指示输入的第一部分和第二部分的段标记索引。索引选择在 [0, 1] 范围内:
    • 0 对应于 句子 A 标记,
    • 1 对应于 句子 B 标记。

    什么是标记类型 ID?

  • position_ids (tf.TensorNumpy array of shape (batch_size, sequence_length), optional) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为 [0, config.max_position_embeddings - 1]。 什么是位置 ID?
  • lengths (tf.TensorNumpy array of shape (batch_size,), optional) — 每个句子的长度,可用于避免在填充标记索引上执行注意力。您还可以使用 attention_mask 获得相同的结果(见上文),这里保留了兼容性索引选择在 [0, ..., input_ids.size(-1)] 范围内:
  • cache (Dict[str, tf.Tensor], optional) — 包含预先计算的隐藏状态(注意力块中的键和值)的字符串到 tf.FloatTensor 的字典,由模型计算(请参见下面的 cache 输出)。可用于加速顺序解码。 字典对象将在前向传递过程中被就地修改,以添加新计算的隐藏状态。
  • head_mask (Numpy arraytf.Tensor of shape (num_heads,)(num_layers, num_heads), optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选择在 [0, 1] 范围内:
    • 1 表示头部未被屏蔽,
    • 0 表示头部被屏蔽。
  • inputs_embeds (tf.Tensor 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 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。
  • training (bool, optional, 默认为 False) — 是否在训练模式下使用模型(一些模块,如 dropout 模块,在训练和评估之间有不同的行为)。
  • labels (tf.Tensor of shape (batch_size, sequence_length), optional) — 用于计算标记分类损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。

返回

transformers.modeling_tf_outputs.TFTokenClassifierOutput 或 tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFTokenClassifierOutput 或 tf.Tensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含根据配置(FlaubertConfig)和输入的各种元素。

  • loss (tf.Tensor of shape (n,), optional, 其中 n 是未屏蔽标签的数量,在提供 labels 时返回) — 分类损失。
  • logits(形状为(batch_size, sequence_length, config.num_labels)tf.Tensor) — 分类分数(SoftMax 之前)。
  • hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层的输出处的隐藏状态以及初始嵌入输出。
  • attentionstuple(tf.Tensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

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

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, TFFlaubertForTokenClassification
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = TFFlaubertForTokenClassification.from_pretrained("flaubert/flaubert_base_cased")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="tf"
... )

>>> logits = model(**inputs).logits
>>> predicted_token_class_ids = tf.math.argmax(logits, axis=-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] for t in predicted_token_class_ids[0].numpy().tolist()]
代码语言:javascript复制
>>> labels = predicted_token_class_ids
>>> loss = tf.math.reduce_mean(model(**inputs, labels=labels).loss)

TFFlaubertForQuestionAnsweringSimple

class transformers.TFFlaubertForQuestionAnsweringSimple

<来源>

代码语言:javascript复制
( config *inputs **kwargs )

参数

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

Flaubert 模型,顶部带有用于提取式问答任务(如 SQuAD)的跨度分类头(在隐藏状态输出之上的线性层,用于计算跨度起始 logits跨度结束 logits)。

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

该模型也是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有内容。

transformers中的 TensorFlow 模型和层接受两种格式的输入:

  • 将所有输入作为关键字参数(类似于 PyTorch 模型),或者
  • 将所有输入作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是,当将输入传递给模型和层时,Keras 方法更喜欢这种格式。由于这种支持,当使用model.fit()等方法时,应该可以“正常工作” - 只需以model.fit()支持的任何格式传递输入和标签!但是,如果您想在 Keras 方法之外使用第二种格式,比如在使用 KerasFunctional API 创建自己的层或模型时,有三种可能性可以用来收集第一个位置参数中的所有输入张量:

  • 只有包含input_ids且没有其他内容的单个张量:model(input_ids)
  • 一个长度不定的列表,其中包含一个或多个按照文档字符串中给定顺序的输入张量:model([input_ids, attention_mask])model([input_ids, attention_mask, token_type_ids])
  • 一个带有与文档字符串中给定的输入名称相关联的一个或多个输入张量的字典:model({"input_ids": input_ids, "token_type_ids": token_type_ids})

请注意,当使用子类化创建模型和层时,您无需担心任何这些内容,因为您可以像对待任何其他 Python 函数一样传递输入!

call

<来源>

代码语言:javascript复制
( input_ids: TFModelInputType | None = None attention_mask: np.ndarray | tf.Tensor | None = None langs: np.ndarray | tf.Tensor | None = None token_type_ids: np.ndarray | tf.Tensor | None = None position_ids: np.ndarray | tf.Tensor | None = None lengths: np.ndarray | tf.Tensor | None = None cache: Optional[Dict[str, tf.Tensor]] = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None start_positions: np.ndarray | tf.Tensor | None = None end_positions: np.ndarray | tf.Tensor | None = None training: bool = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput or tuple(tf.Tensor)

参数

  • input_ids(形状为(batch_size, sequence_length)Numpy arraytf.Tensor) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call() 和 PreTrainedTokenizer.encode()。 什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)Numpy arraytf.Tensor可选) — 用于避免在填充标记索引上执行注意力。掩码值在[0, 1]中选择:
    • 1 表示未被遮蔽的标记,
    • 0 表示被遮蔽的标记。

    什么是注意力掩码?

  • langs(形状为(batch_size, sequence_length)tf.TensorNumpy array可选) — 用于指示输入中每个标记的语言的并行标记序列。索引是语言 ID,可以通过模型配置中提供的两个转换映射从语言名称中获取(仅适用于多语言模型)。更准确地说,语言名称到语言 ID 映射在 model.config.lang2id 中(这是一个字符串到整数的字典),语言 ID 到语言名称 映射在 model.config.id2lang 中(整数到字符串的字典)。 请参阅多语言文档中详细的使用示例。
  • token_type_ids(形状为(batch_size, sequence_length)tf.TensorNumpy array可选) — 段标记索引,用于指示输入的第一部分和第二部分。索引在[0, 1]中选择:
    • 0 对应于 句子 A 标记,
    • 1 对应于 句子 B 标记。

    什么是标记类型 ID?

  • position_ids(形状为(batch_size, sequence_length)tf.TensorNumpy array可选) — 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]中选择。 什么是位置 ID?
  • lengths(形状为(batch_size,)tf.TensorNumpy array可选) — 每个句子的长度,可用于避免在填充标记索引上执行注意力。您也可以使用 attention_mask 获得相同的结果(见上文),这里保留以保持兼容性。在[0, ..., input_ids.size(-1)]中选择的索引:
  • cacheDict[str, tf.Tensor]可选) — 包含模型计算的预计算隐藏状态(注意力块中的键和值)的字符串到 tf.FloatTensor 的字典。可用于加速顺序解码。 在前向传递期间,字典对象将被就地修改以添加新计算的隐藏状态。
  • head_mask(形状为(num_heads,)(num_layers, num_heads)Numpy arraytf.Tensor可选) — 用于使自注意力模块中选定头部失效的掩码。掩码值在[0, 1]中选择:
    • 1 表示头部未被遮蔽,
    • 0 表示头部被遮蔽。
  • inputs_embeds (tf.Tensor 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 而不是普通元组。此参数可在急切模式下使用,在图模式中该值将始终设置为 True。
  • training (bool, optional, 默认为False) — 是否在训练模式下使用模型(一些模块,如 dropout 模块,在训练和评估之间有不同的行为)。
  • start_positions (tf.Tensor of shape (batch_size,), optional) — 用于计算标记分类损失的标记(索引)起始位置的标签。位置被夹紧到序列的长度(sequence_length)。序列外的位置不会计入损失计算。
  • end_positions (tf.Tensor of shape (batch_size,), optional) — 用于计算标记分类损失的标记(索引)结束位置的标签。位置被夹紧到序列的长度(sequence_length)。序列外的位置不会计入损失计算。

返回

transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或tuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFQuestionAnsweringModelOutput 或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含根据配置(FlaubertConfig)和输入的不同元素。

  • loss (tf.Tensor of shape (batch_size, ), optional, 当提供start_positionsend_positions时返回) — 总跨度提取损失是起始位置和结束位置的交叉熵之和。
  • start_logits (tf.Tensor of shape (batch_size, sequence_length)) — 跨度起始分数(SoftMax 之前)。
  • end_logits (tf.Tensor of shape (batch_size, sequence_length)) — 跨度结束分数(SoftMax 之前)。
  • hidden_states (tuple(tf.Tensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。
  • attentions (tuple(tf.Tensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每一层一个)。 注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

TFFlaubertForQuestionAnsweringSimple 的前向方法重写了__call__特殊方法。

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, TFFlaubertForQuestionAnsweringSimple
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = TFFlaubertForQuestionAnsweringSimple.from_pretrained("flaubert/flaubert_base_cased")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="tf")
>>> outputs = model(**inputs)

>>> answer_start_index = int(tf.math.argmax(outputs.start_logits, axis=-1)[0])
>>> answer_end_index = int(tf.math.argmax(outputs.end_logits, axis=-1)[0])

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index   1]
代码语言:javascript复制
>>> # target is "nice puppet"
>>> target_start_index = tf.constant([14])
>>> target_end_index = tf.constant([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = tf.math.reduce_mean(outputs.loss)

alse`时)包含根据配置(FlaubertConfig)和输入的不同元素。

  • loss (tf.Tensor of shape (batch_size, ), optional, 当提供start_positionsend_positions时返回) — 总跨度提取损失是起始位置和结束位置的交叉熵之和。
  • start_logits (tf.Tensor of shape (batch_size, sequence_length)) — 跨度起始分数(SoftMax 之前)。
  • end_logits (tf.Tensor of shape (batch_size, sequence_length)) — 跨度结束分数(SoftMax 之前)。
  • hidden_states (tuple(tf.Tensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。
  • attentions (tuple(tf.Tensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组(每一层一个)。 注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。

TFFlaubertForQuestionAnsweringSimple 的前向方法重写了__call__特殊方法。

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

示例:

代码语言:javascript复制
>>> from transformers import AutoTokenizer, TFFlaubertForQuestionAnsweringSimple
>>> import tensorflow as tf

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_cased")
>>> model = TFFlaubertForQuestionAnsweringSimple.from_pretrained("flaubert/flaubert_base_cased")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="tf")
>>> outputs = model(**inputs)

>>> answer_start_index = int(tf.math.argmax(outputs.start_logits, axis=-1)[0])
>>> answer_end_index = int(tf.math.argmax(outputs.end_logits, axis=-1)[0])

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index   1]
代码语言:javascript复制
>>> # target is "nice puppet"
>>> target_start_index = tf.constant([14])
>>> target_end_index = tf.constant([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = tf.math.reduce_mean(outputs.loss)

0 人点赞