Transformers 4.37 中文文档(五十九)(2)

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: Transformers 4.37 中文文档(五十九)

Transformers 4.37 中文文档(五十九)(1)https://developer.aliyun.com/article/1565290


SwitchTransformersEncoderModel

class transformers.SwitchTransformersEncoderModel

<来源>

( config: SwitchTransformersConfig )

参数

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

SWITCH_TRANSFORMERS 模型的基本 transformer 输出编码器的原始隐藏状态,没有特定的头部。

SWITCH_TRANSFORMERS 模型是由William FedusBarret ZophNoam ShazeerSwitch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity中提出的。它是一种编码器-解码器 T5 样式的模型,具有稀疏的前馈,代表着专家混合(MoE)架构。

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

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

forward

<来源>

( input_ids: Optional = None attention_mask: Optional = None head_mask: Optional = None inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None output_router_logits: Optional = True return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.MoEModelOutput or tuple(torch.FloatTensor)

参数

  • input_ids (torch.LongTensor,形状为(batch_size, sequence_length)) — 词汇表中输入序列标记的索引。SWITCH_TRANSFORMERS 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。
    可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    要了解有关如何为预训练准备input_ids的更多信息,请查看 SWITCH_TRANSFORMERS Training。
  • attention_mask (torch.FloatTensor,形状为(batch_size, sequence_length)可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]之间:
  • 1 表示未被masked的标记,
  • 0 表示被masked的标记。
  • 什么是注意力掩码?
  • head_mask (torch.FloatTensor,形状为(num_heads,)(num_layers, num_heads)可选) — 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]之间:
  • 1 表示头部未被masked
  • 0 表示头部被masked
  • inputs_embeds (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您希望更多地控制如何将input_ids索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
  • output_router_logits (bool, 可选) — 是否返回所有路由器的 logits。它们对于计算路由器损失很有用,在推断期间不应返回。
  • return_dict (bool, 可选) — 是否返回一个 ModelOutput 而不是一个普通元组。

返回

transformers.modeling_outputs.MoEModelOutputtuple(torch.FloatTensor)

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

  • last_hidden_state (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)) — 模型最后一层的隐藏状态序列。
  • hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — torch.FloatTensor元组(如果模型有嵌入层,则为嵌入的输出 + 每个层的输出)的形状为(batch_size, sequence_length, hidden_size)
    模型在每一层输出的隐藏状态以及可选的初始嵌入输出。
  • attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — torch.FloatTensor元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
  • router_probs (tuple(torch.FloatTensor), optional, 当传递output_router_probs=Trueconfig.add_router_probs=True时返回或当config.output_router_probs=True时返回) — torch.FloatTensor元组(每个层一个)的形状为(batch_size, sequence_length, num_experts)
    由 MoE 路由器计算的原始路由器概率,这些术语用于计算混合专家模型的辅助损失和 z 损失。

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

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

示例:

>>> from transformers import AutoTokenizer, SwitchTransformersEncoderModel
>>> tokenizer = AutoTokenizer.from_pretrained("google/switch-base-8")
>>> model = SwitchTransformersEncoderModel.from_pretrained("google/switch-base-8")
>>> input_ids = tokenizer(
...     "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids  # Batch size 1
>>> outputs = model(input_ids=input_ids)
>>> last_hidden_states = outputs.last_hidden_state

T5

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

概述

T5 模型在探索统一文本到文本转换器的迁移学习极限中由Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu提出。

论文摘要如下:

迁移学习,即模型首先在数据丰富的任务上进行预训练,然后在下游任务上进行微调,已成为自然语言处理(NLP)中的一种强大技术。迁移学习的有效性催生了多种方法、方法论和实践。在本文中,我们通过引入一个将每个语言问题转换为文本到文本格式的统一框架,探索了  NLP  的迁移学习技术领域。我们的系统研究比较了数十个语言理解任务上的预训练目标、架构、无标签数据集、迁移方法和其他因素。通过将我们的探索见解与规模和我们的新“巨大干净爬取语料库”相结合,我们在许多涵盖摘要、问答、文本分类等方面的基准上取得了最先进的结果。为了促进未来关于  NLP 的迁移学习的工作,我们发布了我们的数据集、预训练模型和代码。

所有检查点都可以在hub上找到。

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

使用提示

  • T5 是一个编码器-解码器模型,预训练于无监督和监督任务的多任务混合中,每个任务都转换为文本到文本格式。通过为每个任务的输入添加不同的前缀,例如,对于翻译:将英语翻译成德语:…,对于摘要:总结:…,T5 可以在各种任务上直接使用。
  • 预训练包括监督和自监督训练。监督训练是在 GLUE 和 SuperGLUE 基准提供的下游任务上进行的(将它们转换为上面解释的文本到文本任务)。
  • 自监督训练使用损坏的标记,随机删除 15%的标记并用单独的标记替换它们(如果有几个连续的标记被标记为删除,则整个组将被替换为单个标记)。编码器的输入是损坏的句子,解码器的输入是原始句子,目标是被删除的标记,由它们的标记标记。
  • T5 使用相对标量嵌入。编码器输入的填充可以在左侧和右侧进行。
  • 查看下面的训练、推理和脚本部分,了解有关使用的所有详细信息。

T5 有不同的尺寸:

基于原始 T5 模型,Google 发布了一些后续作品:

  • T5v1.1:T5v1.1 是 T5 的改进版本,进行了一些架构调整,仅在 C4 上进行了预训练,没有混合监督任务。请参阅 T5v1.1 的文档,可以在这里找到。
  • MT5:mT5 是一个多语言 T5 模型。它在包括 101 种语言的 mC4 语料库上进行了预训练。请参考可以在这里找到的 mT5 的文档。
  • byT5:byT5 是一个在字节序列而不是 SentencePiece 子词标记序列上进行预训练的 T5 模型。请参考可以在这里找到的 byT5 的文档。
  • UL2:UL2 是一个类似 T5 的模型,预训练于各种去噪目标。
  • Flan-T5:Flan 是一种基于提示的预训练方法。Flan-T5 是在 Flan 数据集上训练的 T5 模型,包括:taskmaster2djaym7/wiki_dialogdeepmind/code_contestslambadagsm8kaqua_ratesnliquascqed
  • FLan-UL2:使用“Flan”提示调整和数据集收集对 UL2 模型进行微调。
  • UMT5:UmT5 是一个多语言 T5 模型,训练于一个改进和更新的 mC4 多语言语料库,跨 107 种语言,使用一种新的采样方法 UniMax。请参考可以在这里找到的 mT5 的文档。

训练

T5 是一个编码器-解码器模型,将所有 NLP 问题转换为文本到文本的格式。它使用教师强制进行训练。这意味着在训练时,我们总是需要一个输入序列和一个相应的目标序列。输入序列通过input_ids馈送到模型。目标序列向右移动,即在前面加上一个起始序列标记,并通过decoder_input_ids馈送到解码器。在教师强制风格中,目标序列然后附加 EOS 标记,并对应于labels。在这里,PAD 标记被用作起始序列标记。T5 可以以监督和无监督的方式进行训练/微调。

可以使用 T5ForConditionalGeneration(或 Tensorflow/Flax 变体),它在解码器顶部包含了语言建模头。

  • 无监督去噪训练

在这种设置中,输入序列的片段被所谓的哨兵标记(又名唯一的掩码标记)屏蔽,输出序列由相同的哨兵标记和真实被屏蔽的标记的串联形成。每个哨兵标记代表这个句子的一个唯一的掩码标记,应该以等形式开始,一直到。默认情况下,T5Tokenizer 中有 100 个哨兵标记可用。

例如,句子“The cute dog walks in the park”中的“cute dog”和“the”被屏蔽后应该被处理如下:

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration
>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")
>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
>>> labels = tokenizer("<extra_id_0> cute dog <extra_id_1> the <extra_id_2>", return_tensors="pt").input_ids
>>> # the forward function automatically creates the correct decoder_input_ids
>>> loss = model(input_ids=input_ids, labels=labels).loss
>>> loss.item()
3.7837

如果您有兴趣在新语料库上预训练 T5,请查看 Examples 目录中的run_t5_mlm_flax.py脚本。

  • 监督训练

在这种设置中,输入序列和输出序列是标准的序列到序列的输入输出映射。假设我们想要为翻译调整模型,例如,我们有一个训练示例:输入序列“The  house is wonderful.”和输出序列“Das Haus ist wunderbar.”,那么它们应该被准备为模型如下:

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration
>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")
>>> input_ids = tokenizer("translate English to German: The house is wonderful.", return_tensors="pt").input_ids
>>> labels = tokenizer("Das Haus ist wunderbar.", return_tensors="pt").input_ids
>>> # the forward function automatically creates the correct decoder_input_ids
>>> loss = model(input_ids=input_ids, labels=labels).loss
>>> loss.item()
0.2542

如您所见,为了计算损失,模型只需要 2 个输入:input_ids(编码输入序列的input_ids)和labels(编码目标序列的input_ids)。模型将根据labels自动创建decoder_input_ids,将它们向右移动一个位置并在前面添加config.decoder_start_token_id,对于 T5 来说等于 0(即填充标记的 id)。还要注意任务前缀:我们在编码之前在输入序列前面添加了‘translate English to German: ’。这将有助于提高性能,因为这个任务前缀在 T5 的预训练中使用过。

然而,上面的示例只显示了一个训练示例。在实践中,我们通常批量训练深度学习模型。这意味着我们必须将示例填充/截断到相同的长度。对于编码器-解码器模型,通常定义max_source_lengthmax_target_length,分别确定输入和输出序列的最大长度(否则将被截断)。这些应根据任务仔细设置。

此外,我们必须确保labels的填充标记 ID 不被损失函数考虑。在 PyTorch 和 Tensorflow 中,可以通过用-100 替换它们来实现,-100 是CrossEntropyLossignore_index。在 Flax 中,可以使用decoder_attention_mask来忽略损失中的填充标记(有关详细信息,请参阅Flax 摘要脚本)。我们还将attention_mask作为模型的附加输入传递,以确保忽略输入的填充标记。下面的代码示例说明了所有这些。

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration
>>> import torch
>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")
>>> # the following 2 hyperparameters are task-specific
>>> max_source_length = 512
>>> max_target_length = 128
>>> # Suppose we have the following 2 training examples:
>>> input_sequence_1 = "Welcome to NYC"
>>> output_sequence_1 = "Bienvenue à NYC"
>>> input_sequence_2 = "HuggingFace is a company"
>>> output_sequence_2 = "HuggingFace est une entreprise"
>>> # encode the inputs
>>> task_prefix = "translate English to French: "
>>> input_sequences = [input_sequence_1, input_sequence_2]
>>> encoding = tokenizer(
...     [task_prefix + sequence for sequence in input_sequences],
...     padding="longest",
...     max_length=max_source_length,
...     truncation=True,
...     return_tensors="pt",
... )
>>> input_ids, attention_mask = encoding.input_ids, encoding.attention_mask
>>> # encode the targets
>>> target_encoding = tokenizer(
...     [output_sequence_1, output_sequence_2],
...     padding="longest",
...     max_length=max_target_length,
...     truncation=True,
...     return_tensors="pt",
... )
>>> labels = target_encoding.input_ids
>>> # replace padding token id's of the labels by -100 so it's ignored by the loss
>>> labels[labels == tokenizer.pad_token_id] = -100
>>> # forward pass
>>> loss = model(input_ids=input_ids, attention_mask=attention_mask, labels=labels).loss
>>> loss.item()
0.188

额外的训练提示:

  • 当使用 AdamW 优化器时,T5 模型需要比Trainer中设置的默认学习率略高。通常,对于大多数问题(分类、摘要、翻译、问答、问题生成),1e-4 和 3e-4 效果很好。请注意,T5 是使用 AdaFactor 优化器进行预训练的。

根据这篇论坛帖子,任务前缀在(1)进行多任务训练时(2)您的任务与 T5 预训练混合中使用的监督任务之一类似或相关时很重要(请参阅论文的附录 D,了解使用的任务前缀)。

如果在 TPU 上训练,建议将数据集的所有示例填充到相同的长度,或者使用pad_to_multiple_of来使用少量预定义的桶大小以适应所有示例。在 TPU 上动态填充批次到最长示例不建议,因为它会在训练期间遇到的每个批次形状触发重新编译,从而显著减慢训练速度。只填充到批次中最长的示例会导致在 TPU 上训练非常缓慢。

推理

在推理时,建议使用 generate()。这种方法负责对输入进行编码,并通过交叉注意力层将编码隐藏状态馈送到解码器,自回归地生成解码器输出。查看这篇博文了解使用 Transformers 生成文本的所有细节。还有这篇博文解释了编码器-解码器模型中生成的工作原理。

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration
>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")
>>> input_ids = tokenizer("translate English to German: The house is wonderful.", return_tensors="pt").input_ids
>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Das Haus ist wunderbar.

请注意,T5 使用pad_token_id作为decoder_start_token_id,因此在生成时如果不使用 generate(),请确保以pad_token_id开头。

上面的示例只显示了一个单独的示例。您也可以进行批量推理,如下所示:

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration
>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")
>>> task_prefix = "translate English to German: "
>>> # use different length sentences to test batching
>>> sentences = ["The house is wonderful.", "I like to work in NYC."]
>>> inputs = tokenizer([task_prefix + sentence for sentence in sentences], return_tensors="pt", padding=True)
>>> output_sequences = model.generate(
...     input_ids=inputs["input_ids"],
...     attention_mask=inputs["attention_mask"],
...     do_sample=False,  # disable sampling to test if batching affects output
... )
>>> print(tokenizer.batch_decode(output_sequences, skip_special_tokens=True))
['Das Haus ist wunderbar.', 'Ich arbeite gerne in NYC.']

由于 T5 已经使用了跨度掩码去噪目标进行训练,因此可以在推理过程中用于预测标记(被掩码的)标记。然后,预测的标记将被放置在标记之间。

>>> from transformers import T5Tokenizer, T5ForConditionalGeneration
>>> tokenizer = T5Tokenizer.from_pretrained("t5-small")
>>> model = T5ForConditionalGeneration.from_pretrained("t5-small")
>>> input_ids = tokenizer("The <extra_id_0> walks in <extra_id_1> park", return_tensors="pt").input_ids
>>> sequence_ids = model.generate(input_ids)
>>> sequences = tokenizer.batch_decode(sequence_ids)
>>> sequences
['<pad><extra_id_0> park offers<extra_id_1> the<extra_id_2> park.</s>']

性能

如果希望获得更快的训练和推理性能,请为 NVIDIA GPU 安装NVIDIA APEX,或为 AMD GPU 安装ROCm APEX,然后模型将自动使用apex.normalization.FusedRMSNorm而不是T5LayerNorm。前者使用优化的融合内核,比后者快几倍。

资源

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

文本分类

标记分类

文本生成

摘要

填充掩码

  • FlaxT5ForConditionalGeneration 由这个示例脚本支持,用于训练具有跨度掩码语言模型目标的 T5。该脚本还展示了如何训练 T5 分词器。FlaxT5ForConditionalGeneration 也由这个笔记本支持。

翻译

问答

🚀 部署

T5Config

class transformers.T5Config

<来源>

( vocab_size = 32128 d_model = 512 d_kv = 64 d_ff = 2048 num_layers = 6 num_decoder_layers = None num_heads = 8 relative_attention_num_buckets = 32 relative_attention_max_distance = 128 dropout_rate = 0.1 layer_norm_epsilon = 1e-06 initializer_factor = 1.0 feed_forward_proj = 'relu' is_encoder_decoder = True use_cache = True pad_token_id = 0 eos_token_id = 1 classifier_dropout = 0.0 **kwargs )

参数

  • vocab_size (int, optional, defaults to 32128) — T5 模型的词汇量。定义了在调用 T5Model 或 TFT5Model 时可以表示的不同标记数量。
  • d_model (int, optional, defaults to 512) — 编码器层和池化层的大小。
  • d_kv (int, optional, defaults to 64) — 每个注意力头的键、查询、值投影的大小。投影层的inner_dim将被定义为num_heads * d_kv
  • d_ff (int, optional, defaults to 2048) — 每个T5Block中间的前馈层的大小。
  • num_layers (int, optional, defaults to 6) — Transformer 编码器中隐藏层的数量。
  • num_decoder_layers (int, optional) — Transformer 解码器中隐藏层的数量。如果未设置,将使用与num_layers相同的值。
  • num_heads (int, optional, defaults to 8) — Transformer 编码器中每个注意力层的注意力头数。
  • relative_attention_num_buckets (int, optional, defaults to 32) — 每个注意力层使用的桶数量。
  • relative_attention_max_distance (int, optional, defaults to 128) — 较长序列的最大距离,用于桶分离。
  • dropout_rate (float, optional, defaults to 0.1) — 所有 dropout 层的比率。
  • classifier_dropout (float, optional, defaults to 0.0) — 分类器的 dropout 比率。
  • layer_norm_eps (float, optional, defaults to 1e-6) — 层归一化层使用的 epsilon。
  • initializer_factor (float, optional, defaults to 1) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。
  • feed_forward_proj (string, optional, defaults to "relu") — 要使用的前馈层类型。应为"relu""gated-gelu"之一。T5v1.1 使用"gated-gelu"前馈投影。原始 T5 使用"relu"
  • use_cache (bool, optional, defaults to True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。

这是用于存储 T5Model 或 TFT5Model 配置的配置类。它用于根据指定的参数实例化 T5 模型,定义模型架构。使用默认值实例化配置将产生类似于 T5 t5-small架构的配置。

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

T5Tokenizer

class transformers.T5Tokenizer

<来源>

( vocab_file eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' extra_ids = 100 additional_special_tokens = None sp_model_kwargs: Optional = None legacy = None **kwargs )

参数

  • vocab_filestr)—包含实例化分词器所需词汇表的SentencePiece文件(通常具有*.spm*扩展名)。
  • eos_tokenstr可选,默认为"")—序列结束标记。
    构建序列时使用特殊标记,这不是用于序列结束的标记。使用的标记是sep_token
  • unk_tokenstr可选,默认为"")—未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。
  • pad_tokenstr可选,默认为"")—用于填充的标记,例如在批处理不同长度的序列时使用。
  • extra_idsint可选,默认为  100)—添加到词汇表中用作哨兵的额外 ID 数量。这些标记可通过调用 get_sentinel_tokens  方法访问为“id{%d}>”,其中”{%d}”是 0 到 extra_ids-1 之间的数字。这些标记可以通过调用  get_sentinel_token_ids 方法检索,额外的特殊标记(List[str]可选):分词器使用的其他特殊标记。
  • sp_model_kwargsdict可选)—将传递给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 的合并操作的丢弃概率。
  • legacybool可选)—是否应使用分词器的legacy行为。Legacy 是在#24622 和#25224 合并之前,包括修复正确处理出现在特殊标记之后的标记的内容。一个简单的例子:
  • legacy=True

构建一个 T5 分词器。基于SentencePiece

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

build_inputs_with_special_tokens

<来源>

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

具有适当特殊标记的 input IDs 列表。

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

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

< source >

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

参数

  • token_ids_0List[int])— ID 列表。
  • token_ids_1List[int]可选)— 可选的第二个 ID 列表,用于序列对。
  • already_has_special_tokensbool可选,默认为False)— 标记列表是否已经格式化为模型的特殊标记。

返回

List[int]

一个整数列表,范围为[0, 1]:1 表示特殊标记,0 表示序列标记。

从没有添加特殊标记的标记列表中检索序列 ID。当使用分词器的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_0List[int])— ID 列表。
  • token_ids_1List[int]可选)— 可选的第二个 ID 列表,用于序列对。

返回

List[int]

零列表。

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

save_vocabulary

< source >

( save_directory: str filename_prefix: Optional = None )

T5TokenizerFast

class transformers.T5TokenizerFast

< source >

( vocab_file = None tokenizer_file = None eos_token = '</s>' unk_token = '<unk>' pad_token = '<pad>' extra_ids = 100 additional_special_tokens = None **kwargs )

参数

  • vocab_filestr)— 包含实例化分词器所需词汇的SentencePiece文件(通常具有*.spm*扩展名)。
  • eos_tokenstr可选,默认为"")— 序列结束标记。
    在构建使用特殊标记的序列时,这不是用于序列结束的标记。使用的标记是sep_token
  • unk_tokenstr可选,默认为"")— 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。
  • pad_tokenstr可选,默认为"")— 用于填充的标记,例如在批处理不同长度的序列时使用。
  • extra_idsint可选,默认为  100)— 添加一些额外的 ID 到词汇表中,用作哨兵。这些标记可以作为“id{%d}>”访问,其中”{%d}”是 0 到  extra_ids-1 之间的数字。可以通过调用 get_sentinel_tokens 方法检索这些标记,通过调用  get_sentinel_token_ids 方法获取标记 ID
  • additional_special_tokensList[str]可选)— 分词器使用的额外特殊标记。

构建一个“快速”T5 分词器(由 HuggingFace 的tokenizers库支持)。基于Unigram

这个分词器继承自 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]

具有适当特殊标记的 input IDs 列表。

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

  • 单个序列: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]

零的列表。

从传递的两个序列创建一个用于序列对分类任务的掩码。T5 不使用 token type ids,因此返回一个零的列表。

PytorchHide Pytorch 内容


Transformers 4.37 中文文档(五十九)(3)https://developer.aliyun.com/article/1565293

相关文章
|
3月前
|
存储 自然语言处理
Transformers 4.37 中文文档(四十八)(1)
Transformers 4.37 中文文档(四十八)
38 2
|
3月前
|
缓存 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十六)(5)
Transformers 4.37 中文文档(五十六)
18 1
|
3月前
|
自然语言处理 PyTorch 算法框架/工具
Transformers 4.37 中文文档(四十八)(5)
Transformers 4.37 中文文档(四十八)
22 1
|
3月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(四十八)(4)
Transformers 4.37 中文文档(四十八)
35 1
|
3月前
|
PyTorch TensorFlow API
Transformers 4.37 中文文档(五十九)(4)
Transformers 4.37 中文文档(五十九)
15 0
|
3月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(五十九)(1)
Transformers 4.37 中文文档(五十九)
21 0
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Transformers 4.37 中文文档(五十九)(3)
Transformers 4.37 中文文档(五十九)
22 0
|
3月前
|
缓存 索引
Transformers 4.37 中文文档(五十九)(5)
Transformers 4.37 中文文档(五十九)
15 0
|
3月前
|
存储 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十四)(4)
Transformers 4.37 中文文档(五十四)
21 0
|
3月前
|
存储 PyTorch 算法框架/工具
Transformers 4.37 中文文档(五十四)(2)
Transformers 4.37 中文文档(五十四)
21 0