原文:
huggingface.co/docs/transformers
T5v1.1
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/t5v1.1
概述
T5v1.1 是由 Colin Raffel 等人在google-research/text-to-text-transfer-transformer存储库中发布的。这是原始 T5 模型的改进版本。这个模型是由patrickvonplaten贡献的。原始代码可以在这里找到。
使用提示
可以直接将 T5v1.1 的权重插入到 T5 模型中,如下所示:
代码语言:javascript复制>>> from transformers import T5ForConditionalGeneration
>>> model = T5ForConditionalGeneration.from_pretrained("google/t5-v1_1-base")
T5 版本 1.1 相对于原始 T5 模型包括以下改进:
- 在前馈隐藏层中使用 GEGLU 激活,而不是 ReLU。参见这篇论文。
- 在预训练中关闭了 Dropout(质量优胜)。在微调期间应重新启用 Dropout。
- 仅在 C4 上进行预训练,没有混合下游任务。
- 嵌入层和分类器层之间没有参数共享。
- “xl”和“xxl”取代了“3B”和“11B”。模型形状有些不同 - 更大的
d_model
和较小的num_heads
和d_ff
。
注意:T5 版本 1.1 仅在C4上进行了预训练,不包括任何监督训练。因此,这个模型在用于下游任务之前必须进行微调,与原始 T5 模型不同。由于 t5v1.1 是无监督预训练的,单任务微调时使用任务前缀并没有真正的优势。如果进行多任务微调,应该使用前缀。
Google 发布了以下变体:
- google/t5-v1_1-small
- google/t5-v1_1-base
- google/t5-v1_1-large
- google/t5-v1_1-xl
- google/t5-v1_1-xxl。
请参考 T5 的文档页面获取所有 API 参考、提示、代码示例和笔记本。
TAPEX
原文:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/tapex
此模型仅处于维护模式,我们不接受任何更改其代码的新 PR。
如果在运行此模型时遇到任何问题,请重新安装支持此模型的最后一个版本:v4.30.0。您可以通过运行以下命令来执行:pip install -U transformers==4.30.0
。
概述
TAPEX 模型是由 Qian Liu、Bei Chen、Jiaqi Guo、Morteza Ziyadi、Zeqi Lin、Weizhu Chen、Jian-Guang Lou 在TAPEX: Table Pre-training via Learning a Neural SQL Executor中提出的。TAPEX 对 BART 模型进行预训练,以解决合成 SQL 查询,然后可以微调以回答与表格数据相关的自然语言问题,以及执行表格事实检查。
TAPEX 已在几个数据集上进行了微调:
- SQA (Microsoft 的顺序问答)
- WTQ(由斯坦福大学提供的维基表问题)
- WikiSQL(由 Salesforce 提供)
- TabFact(由 USCB NLP 实验室提供)。
论文摘要如下:
最近在语言模型预训练方面取得了巨大成功,通过利用大规模的非结构化文本数据。然而,由于缺乏大规模高质量的表格数据,将预训练应用于结构化表格数据仍然是一个挑战。在本文中,我们提出了 TAPEX,以表明通过学习一个神经 SQL 执行器可以实现表格预训练,这是通过自动合成可执行的 SQL 查询及其执行输出获得的合成语料库。TAPEX 通过引导语言模型在多样化、大规模和高质量的合成语料库上模仿 SQL 执行器来解决数据稀缺性挑战。我们在四个基准数据集上评估了 TAPEX。实验结果表明,TAPEX 在所有这些数据集上均大幅优于以前的表格预训练方法,并在所有数据集上取得了新的最先进结果。这包括将弱监督的 WikiSQL 指称准确率提高到 89.5%( 2.3%),将 WikiTableQuestions 指称准确率提高到 57.5%( 4.8%),将 SQA 指称准确率提高到 74.5%( 3.5%),以及将 TabFact 准确率提高到 84.2%( 3.2%)。据我们所知,这是第一项利用合成可执行程序进行表格预训练并在各种下游任务上取得新的最先进结果的工作。
使用提示
- TAPEX 是一个生成(seq2seq)模型。可以直接将 TAPEX 的权重插入到 BART 模型中。
- TAPEX 在中心点上有检查点,这些检查点要么只是预训练的,要么在 WTQ、SQA、WikiSQL 和 TabFact 上进行了微调。
- 句子 表格以
句子 " " 线性化表格
的形式呈现给模型。线性化表格的格式如下:col: col1 | col2 | col 3 row 1 : val1 | val2 | val3 row 2 : ...
。 - TAPEX 有自己的分词器,可以轻松为模型准备所有数据。可以将 Pandas DataFrames 和字符串传递给分词器,它将自动创建
input_ids
和attention_mask
(如下面的使用示例所示)。
用途:推理
下面,我们说明如何使用 TAPEX 进行表格问答。正如大家所看到的,可以直接将 TAPEX 的权重插入到 BART 模型中。我们使用 Auto API,它将根据中心点上的配置文件自动实例化适当的分词器(TapexTokenizer)和模型(BartForConditionalGeneration)。
代码语言:javascript复制>>> from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
>>> import pandas as pd
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/tapex-large-finetuned-wtq")
>>> model = AutoModelForSeq2SeqLM.from_pretrained("microsoft/tapex-large-finetuned-wtq")
>>> # prepare table question
>>> data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
>>> table = pd.DataFrame.from_dict(data)
>>> question = "how many movies does Leonardo Di Caprio have?"
>>> encoding = tokenizer(table, question, return_tensors="pt")
>>> # let the model generate an answer autoregressively
>>> outputs = model.generate(**encoding)
>>> # decode back to text
>>> predicted_answer = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
>>> print(predicted_answer)
53
请注意,TapexTokenizer 还支持批量推断。因此,可以提供不同表/问题的批处理,或单个表和多个问题的批处理,或单个查询和多个表的批处理。让我们举个例子:
代码语言:javascript复制>>> # prepare table question
>>> data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
>>> table = pd.DataFrame.from_dict(data)
>>> questions = [
... "how many movies does Leonardo Di Caprio have?",
... "which actor has 69 movies?",
... "what's the first name of the actor who has 87 movies?",
... ]
>>> encoding = tokenizer(table, questions, padding=True, return_tensors="pt")
>>> # let the model generate an answer autoregressively
>>> outputs = model.generate(**encoding)
>>> # decode back to text
>>> tokenizer.batch_decode(outputs, skip_special_tokens=True)
[' 53', ' george clooney', ' brad pitt']
如果要进行表验证(即确定给定句子是否由表的内容支持或反驳的任务),可以实例化一个 BartForSequenceClassification 模型。 TAPEX 在 hub 上有针对 TabFact 进行微调的检查点,这是表事实检查的重要基准(它达到 84%的准确率)。下面的代码示例再次利用了 Auto API。
代码语言:javascript复制>>> from transformers import AutoTokenizer, AutoModelForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/tapex-large-finetuned-tabfact")
>>> model = AutoModelForSequenceClassification.from_pretrained("microsoft/tapex-large-finetuned-tabfact")
>>> # prepare table sentence
>>> data = {"Actors": ["Brad Pitt", "Leonardo Di Caprio", "George Clooney"], "Number of movies": ["87", "53", "69"]}
>>> table = pd.DataFrame.from_dict(data)
>>> sentence = "George Clooney has 30 movies"
>>> encoding = tokenizer(table, sentence, return_tensors="pt")
>>> # forward pass
>>> outputs = model(**encoding)
>>> # print prediction
>>> predicted_class_idx = outputs.logits[0].argmax(dim=0).item()
>>> print(model.config.id2label[predicted_class_idx])
Refused
TAPEX 架构与 BART 相同,除了标记化。有关配置类及其参数的信息,请参阅 BART 文档。下面记录了 TAPEX 特定的标记器。
TapexTokenizer
class transformers.TapexTokenizer
<来源>
代码语言:javascript复制( vocab_file merges_file do_lower_case = True errors = 'replace' bos_token = '<s>' eos_token = '</s>' sep_token = '</s>' cls_token = '<s>' unk_token = '<unk>' pad_token = '<pad>' mask_token = '<mask>' add_prefix_space = False max_cell_length = 15 **kwargs )
参数
-
vocab_file
(str
)—词汇表文件的路径。 -
merges_file
(str
)—合并文件的路径。 -
do_lower_case
(bool
,可选,默认为True
)—在标记化时是否将输入转换为小写。 -
errors
(str
,可选,默认为"replace"
)—解码字节为 UTF-8 时要遵循的范例。有关更多信息,请参阅bytes.decode。 -
bos_token
(str
,可选,默认为"<s>"
)—在预训练期间使用的序列开始标记。可以用作序列分类器标记。 使用特殊标记构建序列时,这不是用于序列开头的标记。使用的标记是cls_token
。 -
eos_token
(str
,可选,默认为"</s>"
)—序列结束标记。 构建序列时使用特殊标记时,这不是用于序列结尾的标记。使用的标记是sep_token
。 -
sep_token
(str
,可选,默认为"</s>"
)—分隔符标记,在从多个序列构建序列时使用,例如,用于序列分类的两个序列或用于问题回答的文本和问题。它也用作使用特殊标记构建的序列的最后一个标记。 -
cls_token
(str
,可选,默认为"<s>"
)—分类器标记,用于进行序列分类(对整个序列进行分类,而不是对每个标记进行分类)。在使用特殊标记构建时,它是序列的第一个标记。 -
unk_token
(str
,可选,默认为"<unk>"
)—未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。 -
pad_token
(str
,可选,默认为"<pad>"
)—用于填充的标记,例如在批处理不同长度的序列时。 -
mask_token
(str
,可选,默认为"<mask>"
)—用于屏蔽值的标记。在使用掩码语言建模训练此模型时使用的标记。这是模型将尝试预测的标记。 -
add_prefix_space
(bool
,可选,默认为False
)—是否在输入中添加初始空格。这允许将前导单词视为任何其他单词。(BART 标记器通过前导空格检测单词的开头)。 -
max_cell_length
(int
,可选,默认为 15)—线性化表时每个单元格的最大字符数。如果超过此数字,将进行截断。
构建一个 TAPEX 标记器。基于字节级字节对编码(BPE)。
此分词器可用于展平一个或多个表格,并将它们与一个或多个相关句子连接起来,以供 TAPEX 模型使用。TAPEX 分词器创建的格式如下:
句子列:col1 | col2 | col 3 行 1:val1 | val2 | val3 行 2:…
分词器支持单个表格 单个查询,单个表格和多个查询(在这种情况下,每个查询将被复制以匹配每个表格),单个查询和多个表格(在这种情况下,每个表格将被复制以匹配每个查询),以及多个表格和查询。换句话说,您可以为分词器提供一批表格 问题,以便为模型准备它们。
分词本身基于 BPE 算法。它与 BART、RoBERTa 和 GPT-2 使用的算法相同。
此分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考此超类以获取有关这些方法的更多信息。
__call__
< source >
代码语言:javascript复制( table: Union = None query: Union = None answer: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None stride: int = 0 pad_to_multiple_of: Optional = None return_tensors: Union = None return_token_type_ids: Optional = None return_attention_mask: Optional = None return_overflowing_tokens: bool = False return_special_tokens_mask: bool = False return_offsets_mapping: bool = False return_length: bool = False verbose: bool = True **kwargs )
参数
-
table
(pd.DataFrame
,List[pd.DataFrame]
)— 包含表格数据的表格。 -
query
(str
或List[str]
,可选)— 与一个或多个表格相关的句子或句子批次。请注意,句子的数量必须与表格的数量相匹配。 -
answer
(str
或List[str]
,可选)— 可选地,与问题相关的答案作为监督。 -
add_special_tokens
(bool
,可选,默认为True
)— 在编码序列时是否添加特殊标记。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了自动添加到输入 id 的标记。如果要自动添加bos
或eos
标记,则这很有用。 -
padding
(bool
,str
或 PaddingStrategy,可选,默认为False
)— 激活和控制填充。接受以下值:-
True
或'longest'
:填充到批次中最长的序列(如果只提供单个序列,则不填充)。 -
'max_length'
: 使用参数max_length
指定的最大长度进行填充,或者如果未提供该参数,则填充到模型的最大可接受输入长度。 -
False
或'do_not_pad'
(默认):不填充(即可以输出具有不同长度的序列的批次)。
-
-
truncation
(bool
,str
或 TruncationStrategy,可选,默认为False
)— 激活和控制截断。接受以下值:-
True
或'longest_first'
:使用参数max_length
指定的最大长度进行截断,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批对序列),则将逐个标记截断,从最长序列中删除一个标记。 -
'only_first'
: 使用参数max_length
指定的最大长度进行截断,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批对序列),则只会截断第一个序列。 -
'only_second'
: 使用参数max_length
指定的最大长度进行截断,或者如果未提供该参数,则截断到模型的最大可接受输入长度。如果提供了一对序列(或一批对序列),则只会截断第二个序列。 -
False
或'do_not_truncate'
(默认):不截断(即可以输出长度大于模型最大可接受输入大小的批次)。
-
-
max_length
(int
, 可选) — 控制截断/填充参数之一使用的最大长度。 如果未设置或设置为None
,则将使用预定义的模型最大长度(如果截断/填充参数需要最大长度)。如果模型没有特定的最大输入长度(如 XLNet),则将禁用截断/填充到最大长度。 -
stride
(int
, 可选, 默认为 0) — 如果与max_length
一起设置为一个数字,则当return_overflowing_tokens=True
时返回的溢出标记将包含截断序列末尾的一些标记,以提供截断和溢出序列之间的一些重叠。此参数的值定义重叠标记的数量。 -
is_split_into_words
(bool
, 可选, 默认为False
) — 输入是否已经预分词(例如,已分词)。如果设置为True
,分词器会假定输入已经分词(例如,通过在空格上分割),然后对其进行标记化。这对于 NER 或标记分类很有用。 -
pad_to_multiple_of
(int
, 可选) — 如果设置,将序列填充到提供的值的倍数。需要激活padding
。这对于启用 NVIDIA 硬件上的 Tensor Cores(计算能力>= 7.5
,Volta)特别有用。 -
return_tensors
(str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:-
'tf'
: 返回 TensorFlowtf.constant
对象。 -
'pt'
: 返回 PyTorchtorch.Tensor
对象。 -
'np'
: 返回 Numpynp.ndarray
对象。
-
-
add_special_tokens
(bool
, 可选, 默认为True
) — 是否对序列进行编码,使用相对于其模型的特殊标记。 -
padding
(bool
,str
或 PaddingStrategy, 可选, 默认为False
) — 激活和控制填充。接受以下值:-
True
或'longest'
: 填充到批次中最长的序列(如果只提供了单个序列,则不填充)。 -
'max_length'
: 填充到由参数max_length
指定的最大长度,或者填充到模型可接受的最大输入长度(如果未提供该参数)。 -
False
或'do_not_pad'
(默认): 无填充(即,可以输出长度不同的序列批次)。
-
-
truncation
(bool
,str
,TapexTruncationStrategy
或 TruncationStrategy, — 可选, 默认为False
): 激活和控制截断。接受以下值:-
'drop_rows_to_fit'
: 截断到由参数max_length
指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。这将逐行截断,从表中删除行。 -
True
或'longest_first'
: 截断到由参数max_length
指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。如果提供了一对序列(或一批序列),则将逐个标记截断,从一对序列中最长的序列中删除一个标记。 -
'only_first'
: 截断到由参数max_length
指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。如果提供了一对序列(或一批序列),则仅截断第一个序列。 -
'only_second'
: 截断到由参数max_length
指定的最大长度,或者截断到模型可接受的最大输入长度(如果未提供该参数)。如果提供了一对序列(或一批序列),则仅截断第二个序列。 -
False
或'do_not_truncate'
(默认):不截断(即,可以输出具有大于模型最大可接受输入大小的序列长度的批次)。
-
-
max_length
(int
, optional) — 控制截断/填充参数之一使用的最大长度。如果未设置或设置为None
,则将使用预定义的模型最大长度(如果截断/填充参数之一需要最大长度)。如果模型没有特定的最大输入长度(如 XLNet),则截断/填充到最大长度将被停用。 -
stride
(int
, optional, 默认为 0) — 如果与max_length
一起设置为一个数字,则当return_overflowing_tokens=True
时返回的溢出标记将包含从截断序列末尾返回的一些标记,以提供截断和溢出序列之间的一些重叠。此参数的值定义了重叠标记的数量。 -
pad_to_multiple_of
(int
, optional) — 如果设置,将填充序列到提供的值的倍数。这对于在具有计算能力>= 7.5
(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。 -
return_tensors
(str
或 TensorType, optional) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:-
'tf'
: 返回 TensorFlowtf.constant
对象。 -
'pt'
: 返回 PyTorchtorch.Tensor
对象。 -
'np'
: 返回 Numpynp.ndarray
对象。
-
对一个或多个表序列对进行标记化和为模型准备的主要方法。
save_vocabulary
<来源>
代码语言:javascript复制( save_directory: str filename_prefix: Optional = None )
Transformer XL
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/transfo-xl
这个模型只处于维护模式,因此我们不会接受任何新的更改其代码的 PR。由于与pickle.load
相关的安全问题,此模型已被弃用。
我们建议切换到更近期的模型以提高安全性。
如果您仍然希望在实验中使用TransfoXL
,我们建议使用Hub 检查点,并使用特定的修订版本以确保您从 Hub 下载安全文件。
为了允许使用pickle.load()
,您需要将环境变量TRUST_REMOTE_CODE
设置为True
。
import os
from transformers import TransfoXLTokenizer, TransfoXLLMHeadModel
os.environ["TRUST_REMOTE_CODE"] = "True"
checkpoint = 'transfo-xl-wt103'
revision = '40a186da79458c9f9de846edfaea79c412137f97'
tokenizer = TransfoXLTokenizer.from_pretrained(checkpoint, revision=revision)
model = TransfoXLLMHeadModel.from_pretrained(checkpoint, revision=revision)
如果您在运行此模型时遇到任何问题,请重新安装支持此模型的最后一个版本:v4.35.0。您可以通过运行以下命令来执行:pip install -U transformers==4.35.0
。
概述
Transformer-XL 模型是由 Zihang Dai、Zhilin Yang、Yiming Yang、Jaime Carbonell、Quoc V. Le、Ruslan Salakhutdinov 在Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context中提出的。它是一个因果(单向)变压器,具有相对定位(正弦)嵌入,可以重用先前计算的隐藏状态以便于更长的上下文(记忆)。该模型还使用自适应 softmax 输入和输出(绑定)。
论文的摘要如下:
变压器有潜力学习更长期的依赖关系,但在语言建模设置中受到固定长度上下文的限制。我们提出了一种新颖的神经架构 Transformer-XL,它能够在不破坏时间连贯性的情况下实现超越固定长度的依赖关系学习。它包括一个段级循环机制和一种新颖的位置编码方案。我们的方法不仅能够捕捉更长期的依赖关系,还能解决上下文碎片化问题。因此,Transformer-XL 学习的依赖关系比 RNN 长 80%,比普通变压器长 450%,在短序列和长序列上表现更好,并且在评估过程中比普通变压器快 1800 多倍。值得注意的是,我们将 bpc/perplexity 的最新结果改进到了 enwiki8 的 0.99,text8 的 1.08,WikiText-103 的 18.3,One Billion Word 的 21.8,Penn Treebank 的 54.5(无需微调)。当仅在 WikiText-103 上训练时,Transformer-XL 能够生成具有数千个标记的合理连贯的新文章。
这个模型是由thomwolf贡献的。原始代码可以在这里找到。
使用提示
- Transformer-XL 使用相对正弦位置嵌入。填充可以在左侧或右侧进行。原始实现在左侧进行填充训练 SQuAD,因此填充默认设置为左侧。
- Transformer-XL 是少数没有序列长度限制的模型之一。
- 与常规的 GPT 模型相同,但引入了两个连续片段的循环机制(类似于具有两个连续输入的常规 RNN)。在这个上下文中,一个片段是一系列连续的标记(例如 512 个),可能跨越多个文档,片段按顺序馈送到模型中。
- 基本上,前一个片段的隐藏状态被连接到当前输入以计算注意力分数。这使得模型能够关注前一个片段和当前片段中的信息。通过堆叠多个注意力层,可以将感受野扩展到多个先前的片段。
- 这将把位置嵌入改为位置相对嵌入(因为常规位置嵌入会在给定位置的当前输入和当前隐藏状态中产生相同的结果),并且需要对计算注意力分数的方式进行一些调整。
由于 PyTorch 中的一个错误,TransformerXL 与torch.nn.DataParallel不兼容,请参阅问题#36035
资源
- 文本分类任务指南
- 因果语言建模任务指南
TransfoXLConfig
class transformers.TransfoXLConfig
<来源>
代码语言:javascript复制( vocab_size = 267735 cutoffs = [20000, 40000, 200000] d_model = 1024 d_embed = 1024 n_head = 16 d_head = 64 d_inner = 4096 div_val = 4 pre_lnorm = False n_layer = 18 mem_len = 1600 clamp_len = 1000 same_length = True proj_share_all_but_first = True attn_type = 0 sample_softmax = -1 adaptive = True dropout = 0.1 dropatt = 0.0 untie_r = True init = 'normal' init_range = 0.01 proj_init_std = 0.01 init_std = 0.02 layer_norm_epsilon = 1e-05 eos_token_id = 0 **kwargs )
参数
-
vocab_size
(int
, optional, 默认为 267735) — BERT 模型的词汇量。定义了在调用 TransfoXLModel 或 TFTransfoXLModel 时可以由inputs_ids
表示的不同标记数量。 -
cutoffs
(List[int]
, optional, 默认为[20000, 40000, 200000]
) — 自适应 softmax 的截断值。 -
d_model
(int
, optional, 默认为 1024) — 模型隐藏状态的维度。 -
d_embed
(int
, optional, 默认为 1024) — 嵌入的维度 -
n_head
(int
, optional, 默认为 16) — Transformer 编码器中每个注意力层的注意力头数量。 -
d_head
(int
, optional, 默认为 64) — 模型头部的维度。 -
d_inner
(int
, optional, 默认为 4096) — FF 中的内部维度 -
div_val
(int
, optional, 默认为 4) — 自适应输入和 softmax 的除数值 -
pre_lnorm
(boolean
, optional, 默认为False
) — 是否在块中将 LayerNorm 应用于输入而不是输出。 -
n_layer
(int
, optional, 默认为 18) — Transformer 编码器中的隐藏层数量。 -
mem_len
(int
, optional, 默认为 1600) — 保留的先前头部的长度。 -
clamp_len
(int
, optional, 默认为 1000) — 在 clamp_len 之后使用相同的位置嵌入。 -
same_length
(boolean
, optional, 默认为True
) — 是否对所有标记使用相同的注意力长度 -
proj_share_all_but_first
(boolean
, optional, 默认为True
) — True 表示共享除第一个 proj 之外的所有 proj,False 表示不共享。 -
attn_type
(int
, optional, 默认为 0) — 注意力类型。0 表示 Transformer-XL,1 表示 Shaw 等人,2 表示 Vaswani 等人,3 表示 Al Rfou 等人。 -
sample_softmax
(int
, optional, 默认为-1) — 采样 softmax 中的样本数量。 -
adaptive
(boolean
, optional, 默认为True
) — 是否使用自适应 softmax。 -
dropout
(float
, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的丢弃概率。 -
dropatt
(float
, optional, 默认为 0.0) — 注意力概率的丢弃比率。 -
untie_r
(boolean
, optional, 默认为True
) — 是否解开相对位置偏差。 -
init
(str
, optional, 默认为"normal"
) — 要使用的参数初始化器。 -
init_range
(float
, optional, 默认为 0.01) — 由 U(-init_range, init_range)初始化的参数。 -
proj_init_std
(float
, optional, 默认为 0.01) — 由 N(0, init_std)初始化的参数 -
init_std
(float
, optional, 默认为 0.02) — 由 N(0, init_std)初始化的参数 -
layer_norm_epsilon
(float
, optional, 默认为 1e-05) — 在层归一化层中使用的 epsilon -
eos_token_id
(int
, optional, 默认为 0) — 流结束标记 id。
这是用于存储 TransfoXLModel 或 TFTransfoXLModel 配置的配置类。它用于根据指定的参数实例化一个 Transformer-XL 模型,定义模型架构。使用默认值实例化配置将产生类似于 TransfoXL transfo-xl-wt103架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
代码语言:javascript复制>>> from transformers import TransfoXLConfig, TransfoXLModel
>>> # Initializing a Transformer XL configuration
>>> configuration = TransfoXLConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = TransfoXLModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
TransfoXLTokenizer
class transformers.TransfoXLTokenizer
<来源>
代码语言:javascript复制( special = None min_freq = 0 max_size = None lower_case = False delimiter = None vocab_file = None pretrained_vocab_file: str = None never_split = None unk_token = '<unk>' eos_token = '<eos>' additional_special_tokens = ['<formula>'] language = 'en' **kwargs )
参数
-
special
(List[str]
,可选) — 特殊标记的列表(由此分词器的原始实现处理)。 -
min_freq
(int
,可选,默认为 0) — 标记必须出现的最小次数,以便保留在词汇表中(否则将映射到unk_token
)。 -
max_size
(int
,可选) — 词汇表的最大大小。如果未设置,它将默认为根据min_freq
规则排除标记后找到的词汇表的大小。 -
lower_case
(bool
,可选,默认为False
) — 在标记化时是否将输入转换为小写。 -
delimiter
(str
,可选) — 标记之间使用的分隔符。 -
vocab_file
(str
,可选) — 包含词汇表的文件(来自原始实现)。 -
pretrained_vocab_file
(str
,可选) — 包含使用save_pretrained()
方法保存的词汇表的文件。 -
never_split
(List[str]
,可选) — 不应拆分的标记列表。如果未指定列表,将简单地使用现有的特殊标记。 -
unk_token
(str
,可选,默认为"<unk>"
) — 未知标记。词汇表中不存在的标记无法转换为 ID,而是设置为此标记。 -
eos_token
(str
,可选,默认为"<eos>"
) — 序列结束标记。 -
additional_special_tokens
(List[str]
,可选,默认为['<formula>']
) — 附加特殊标记的列表(用于 HuggingFace 功能)。 -
language
(str
,可选,默认为"en"
) — 此分词器的语言(用于更多预处理)。
构建一个从原始代码中的 Vocab 类调整的 Transformer-XL 分词器,原始代码在这里。Transformer-XL 分词器是一个单词级的分词器(没有子词分词)。
这个分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考这个超类以获取有关这些方法的更多信息。
save_vocabulary
<来源>
代码语言:javascript复制( save_directory: str filename_prefix: Optional = None )
TransfoXL 特定输出
class transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput
<来源>
代码语言:javascript复制( last_hidden_state: FloatTensor mems: List = None hidden_states: Optional = None attentions: Optional = None )
参数
-
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态的序列。 -
mems
(List[torch.FloatTensor]
,长度为config.n_layers
) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。已经计算过其过去的令牌 id 不应该作为输入 id 传递给此模型。 - 模型输出的隐藏状态,以及初始嵌入输出。 模型在每一层输出的隐藏状态以及初始嵌入输出。
- 模型在每一层输出的隐藏状态以及初始嵌入输出。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
用于模型输出的基类,可能还包含过去的键/值(用于加速顺序解码)。
class transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput
<来源>
代码语言:javascript复制( losses: Optional = None prediction_scores: FloatTensor = None mems: List = None hidden_states: Optional = None attentions: Optional = None loss: Optional = None )
参数
-
losses
(torch.FloatTensor
,形状为*(batch_size, sequence_length-1)*,可选的,当提供labels
时返回) — 语言建模损失(未减少)。 -
prediction_scores
(torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。 -
mems
(List[torch.FloatTensor]
,长度为config.n_layers
) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。已经计算过其过去的令牌 id 不应该作为输入 id 传递给此模型。 -
hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或者config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入输出,一个用于每一层的输出)。hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或者config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入输出,一个用于每一层的输出)。 -
attentions
(tuple(torch.FloatTensor)
, 可选的, 当传递output_attentions=True
或者config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。 -
loss
(torch.FloatTensor
,形状为()
,可选的,当提供labels
时返回) — 减少的语言建模损失。
用于模型输出的基类,可能还包含过去的键/值(用于加速顺序解码)。
class transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput
<来源>
代码语言:javascript复制( last_hidden_state: tf.Tensor = None mems: List[tf.Tensor] = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None )
参数
-
last_hidden_state
(tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
mems
(List[tf.Tensor]
,长度为config.n_layers
) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。已经计算过其过去的令牌 id 不应该作为输入 id 传递给此模型。 -
hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 一个用于每层的输出)。 每层模型输出的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
模型输出的基类,可能还包含过去的键/值(以加速顺序解码)。
class transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput
<来源>
代码语言:javascript复制( prediction_scores: tf.Tensor = None mems: List[tf.Tensor] = None hidden_states: Tuple[tf.Tensor] | None = None attentions: Tuple[tf.Tensor] | None = None )
参数
-
losses
(形状为*(batch_size, sequence_length-1)*的tf.Tensor
,可选,当提供labels
时返回)- 语言建模损失(未减少)。 -
prediction_scores
(形状为(batch_size, sequence_length, config.vocab_size)
的tf.Tensor
)- 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。 -
mems
(长度为config.n_layers
的List[tf.Tensor]
)- 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。将其过去传递给此模型的令牌 ID 不应作为输入 ID 传递,因为它们已经计算过。 -
hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 一个用于每层的输出)。 每层模型输出的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
模型输出的基类,可能还包含过去的键/值(以加速顺序解码)。
PytorchHide Pytorch 内容
TransfoXLModel
class transformers.TransfoXLModel
<来源>
代码语言:javascript复制( config )
参数
config
(TransfoXLConfig)- 模型的所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 Bert 模型变压器输出原始隐藏状态,没有特定的头部。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None mems: 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.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
mems
(List[torch.FloatTensor]
,长度为config.n_layers
) — 包含由模型计算的预先计算的隐藏状态(注意力块中的键和值)(请参见下面的mems
输出)。可用于加速顺序解码。将其过去给此模型的标记 ID 不应作为input_ids
传递,因为它们已经计算过。 -
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被
掩码
, - 0 表示头部被
掩码
。
- 1 表示头部未被
-
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,这将很有用,而不是使用模型的内部嵌入查找矩阵。 -
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请查看返回张量下的attentions
。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回张量下的hidden_states
。 -
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput 或tuple(torch.FloatTensor)
一个 transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLModelOutput 或torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(TransfoXLConfig)和输入的各种元素。
-
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层输出的隐藏状态序列。 -
mems
(List[torch.FloatTensor]
,长度为config.n_layers
) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(查看mems
输入)。将其过去传递给此模型的标记 ID 不应作为输入 ID 传递,因为它们已经计算过。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。 模型在每一层输出的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) — Tuple oftorch.FloatTensor
(one for each layer) of shape(batch_size, num_heads, sequence_length, sequence_length)
。 在注意力 softmax 后的注意力权重,用于计算自注意力头部的加权平均值。
TransfoXLModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, TransfoXLModel
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLModel.from_pretrained("transfo-xl-wt103")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
TransfoXLLMHeadModel
class transformers.TransfoXLLMHeadModel
< source >
代码语言:javascript复制( config )
参数
config
(TransfoXLConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
在顶部带有语言建模头部的 Transformer-XL 模型(自适应 softmax,其权重与自适应输入嵌入绑定)
这个模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
< source >
代码语言:javascript复制( input_ids: Optional = None mems: 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.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
() 了解详情。 输入 ID 是什么? -
mems
(List[torch.FloatTensor]
of lengthconfig.n_layers
) — 包含由模型计算的预计算隐藏状态(注意力块中的键和值),如模型(见下面的mems
输出)所计算的。可用于加速顺序解码。将其 mems 给定给此模型的令牌 id 不应作为input_ids
传递,因为它们已经被计算过了。 -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
-
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为关联向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。 -
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 -
labels
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 用于语言建模的标签。请注意,模型内部已经移动标签,即您可以设置labels = input_ids
。在[-100, 0, ..., config.vocab_size]
中选择索引。所有设置为-100
的标签都被忽略(掩码),损失仅计算[0, ..., config.vocab_size]
中的标签。
返回
transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput 或 tuple(torch.FloatTensor)
transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLLMHeadModelOutput 或 torch.FloatTensor
元组(如果传递return_dict=False
或当config.return_dict=False
时)包括根据配置(TransfoXLConfig)和输入的各种元素。
-
losses
(torch.FloatTensor
,形状为*(batch_size, sequence_length-1)*,可选,当提供labels
时返回) — 语言建模损失(未减少)。 -
prediction_scores
(torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。 -
mems
(List[torch.FloatTensor]
,长度为config.n_layers
) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(见mems
输入)。将其过去传递给此模型的令牌 id 不应作为输入 id 传递,因为它们已经计算过。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层输出的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。 注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
loss
(torch.FloatTensor
,形状为()
,可选,当提供labels
时返回) 减少的语言建模损失。
TransfoXLLMHeadModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此之后调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, TransfoXLLMHeadModel
>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLLMHeadModel.from_pretrained("transfo-xl-wt103")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> loss = outputs.loss
>>> logits = outputs.logits
TransfoXLForSequenceClassification
class transformers.TransfoXLForSequenceClassification
< source >
代码语言:javascript复制( config )
参数
config
(TransfoXLConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
Transformer-XL 模型,顶部带有一个序列分类头(线性层)。
TransfoXLForSequenceClassification 使用最后一个令牌进行分类,就像其他因果模型(例如 GPT-1)一样。
由于它在最后一个令牌上进行分类,因此需要知道最后一个令牌的位置。如果在配置中定义了 pad_token_id
,则会找到每行中不是填充令牌的最后一个令牌。如果未定义 pad_token_id
,则会简单地取批处理中每行的最后一个值。当传递 inputs_embeds
而不是 input_ids
时,它无法猜测填充令牌,因此会执行相同操作(取批处理中每行的最后一个值)。
该模型继承自 PreTrainedModel。检查超类文档,了解库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
该模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
< source >
代码语言:javascript复制( input_ids: Optional = None mems: 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.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLSequenceClassifierOutputWithPast or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列令牌的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
mems
(List[torch.FloatTensor]
of lengthconfig.n_layers
) — 包含由模型计算得出的预先计算的隐藏状态(注意力块中的键和值),可以用于加速顺序解码。将这些隐藏状态传递给模型的令牌 id 不应作为input_ids
传递,因为它们已经被计算过。 -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
-
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为关联向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量中的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量中的hidden_states
。 -
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 -
labels
(torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels == 1
,则计算回归损失(均方损失),如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回值
transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLSequenceClassifierOutputWithPast
或torch.FloatTensor
元组
一个transformers.models.deprecated.transfo_xl.modeling_transfo_xl.TransfoXLSequenceClassifierOutputWithPast
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(TransfoXLConfig)和输入的各种元素。
-
损失
(torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类(如果config.num_labels==1
则为回归)损失。 -
logits
(torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — 分类(如果config.num_labels==1
则为回归)得分(SoftMax 之前)。 -
mems
(List[torch.FloatTensor]
,长度为config.n_layers
) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(查看mems
输入)。将其过去给予此模型的令牌 id 不应作为输入 id 传递,因为它们已经计算过。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 一个用于每个层的输出)。 模型在每个层的输出隐藏状态加上初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
TransfoXLForSequenceClassification 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
单标签分类示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, TransfoXLForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103")
>>> 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 = TransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
多标签分类示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, TransfoXLForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103", 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 = TransfoXLForSequenceClassification.from_pretrained(
... "transfo-xl-wt103", 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
TensorFlow 隐藏 TensorFlow 内容
TFTransfoXLModel
class transformers.TFTransfoXLModel
<来源>
代码语言:javascript复制( config *inputs **kwargs )
参数
config
(TransfoXLConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 Bert 模型变压器输出原始隐藏状态,没有特定的头部。
这个模型继承自 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
< source >
代码语言:javascript复制( input_ids: TFModelInputType | None = None mems: List[tf.Tensor] | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None training: bool = False ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput or tuple(tf.Tensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的tf.Tensor
或Numpy array
)- 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
()和 PreTrainedTokenizer.encode()。 什么是 input IDs? -
mems
(长度为config.n_layers
的List[tf.Tensor]
)- 包含由模型计算的预计算隐藏状态(注意力块中的键和值)(请参见下面的mems
输出)。可用于加速顺序解码。将其mems
给定给此模型的标记 id 不应作为input_ids
传递,因为它们已经计算过。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
或Numpy array
,可选)- 用于使自注意力模块中的选定头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
或Numpy array
,可选)- 可选地,您可以选择直接传递嵌入表示,而不是传递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, defaults toFalse
) — 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput 或 tuple(tf.Tensor)
transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLModelOutput 或一个tf.Tensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(TransfoXLConfig)和输入的不同元素。
-
last_hidden_state
(tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
mems
(List[tf.Tensor]
,长度为config.n_layers
) — 包含预计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码(参见mems
输入)。将过去给定给该模型的令牌 id 不应作为输入 id 传递,因为它们已经被计算过。 -
hidden_states
(tuple(tf.Tensor)
,optional,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 一个用于每一层的输出)。 模型在每一层输出处的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(tf.Tensor)
,optional,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
TFTransfoXLModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, TFTransfoXLModel
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TFTransfoXLModel.from_pretrained("transfo-xl-wt103")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> last_hidden_states = outputs.last_hidden_state
TFTransfoXLLMHeadModel
class transformers.TFTransfoXLLMHeadModel
< source >
代码语言:javascript复制( config )
参数
config
(TransfoXLConfig)- 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
具有顶部语言建模头部的 Transformer-XL 模型(自适应 softmax,其权重与自适应输入嵌入相关联)
此模型继承自 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 mems: List[tf.Tensor] | None = None head_mask: np.ndarray | tf.Tensor | None = None inputs_embeds: np.ndarray | tf.Tensor | None = None output_attentions: bool | None = None output_hidden_states: bool | None = None return_dict: bool | None = None labels: np.ndarray | tf.Tensor | None = None training: bool = False ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput or tuple(tf.Tensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的tf.Tensor
或Numpy 数组
)- 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
()和 PreTrainedTokenizer.encode()。 什么是输入 ID? -
mems
(长度为config.n_layers
的List[tf.Tensor]
)- 包含由模型计算得到的预计算隐藏状态(自注意力块中的键和值)(请参见下面的mems
输出)。可用于加速顺序解码。将其 mems 给定给此模型的标记 ID 不应作为input_ids
传递,因为它们已经计算过。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的tf.Tensor
或Numpy 数组
,可选)- 用于使自注意力模块中选择的头部失效的掩码。掩码值选在[0, 1]
之间:- 1 表示头部“未被掩码”,
- 0 表示头部是
masked
。
-
inputs_embeds
(tf.Tensor
或Numpy 数组
,形状为(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 模块在训练和评估之间有不同的行为)。
返回
transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput 或tuple(tf.Tensor)
一个 transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLLMHeadModelOutput 或一个tf.Tensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(TransfoXLConfig)和输入的各种元素。
-
losses
(tf.Tensor
,形状为*(batch_size, sequence_length-1)*,optional, 当提供labels
时返回) — 语言建模损失(未减少)。 -
prediction_scores
(tf.Tensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 后每个词汇标记的分数)。 -
mems
(List[tf.Tensor]
of lengthconfig.n_layers
) — 包含预先计算的隐藏状态(注意力块中的键和值)。可以用于加速顺序解码。将其过去传递给该模型的令牌 id 不应作为输入 id 传递,因为它们已经被计算过。 -
hidden_states
(tuple(tf.Tensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 一个用于每个层的输出)。 模型在每个层的输出处的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(tf.Tensor)
,optional,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每个层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
TFTransfoXLLMHeadModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, TFTransfoXLLMHeadModel
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TFTransfoXLLMHeadModel.from_pretrained("transfo-xl-wt103")
>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
>>> outputs = model(inputs)
>>> logits = outputs.logits
TFTransfoXLForSequenceClassification
class transformers.TFTransfoXLForSequenceClassification
<来源>
代码语言:javascript复制( config *inputs **kwargs )
参数
config
(TransfoXLConfig) - 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
Transfo XL 模型变压器,顶部带有序列分类头(线性层)。
TFTransfoXLForSequenceClassification 使用最后一个标记来进行分类,就像其他因果模型(例如 GPT-1、GPT-2)一样。
由于它在最后一个标记上进行分类,因此需要知道最后一个标记的位置。如果在配置中定义了pad_token_id
,它会找到每行中不是填充标记的最后一个标记。如果未定义pad_token_id
,它会简单地取批处理中每行的最后一个值。由于在传递inputs_embeds
而不是input_ids
时无法猜测填充标记,因此它会执行相同操作(取批处理中每行的最后一个值)。
这个模型继承自 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: TFModelInputType | None = None mems: List[tf.Tensor] | None = 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: Optional[bool] = False ) → export const metadata = 'undefined';transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLSequenceClassifierOutputWithPast or tuple(tf.Tensor)
参数
-
input_ids
(tf.Tensor
或形状为(batch_size, sequence_length)
的Numpy array
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.call
() 和 PreTrainedTokenizer.encode()。 什么是输入 ID? -
mems
(List[tf.Tensor]
,长度为config.n_layers
) — 包含由模型计算得到的预计算隐藏状态(注意力块中的键和值)(请参见下面的mems
输出)。可用于加速顺序解码。将其mems
给予此模型的标记 id 不应作为input_ids
传递,因为它们已经计算过。 -
head_mask
(tf.Tensor
或形状为(num_heads,)
或(num_layers, num_heads)
的Numpy array
,可选) — 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]
之间:- 1 表示头部未被
masked
。 - 0 表示头部被
masked
。
- 1 表示头部未被
-
inputs_embeds
(tf.Tensor
或形状为(batch_size, sequence_length, hidden_size)
的Numpy array
,可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的attentions
。此参数仅在急切模式下可用,在图模式下将使用配置中的值。 -
output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states
。此参数仅在急切模式下可用,在图模式下将使用配置中的值。 -
return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。 -
training
(bool
, 可选,默认为False
) — 是否在训练模式下使用模型(一些模块,如 dropout 模块,在训练和评估之间有不同的行为)。 -
labels
(tf.Tensor
,形状为(batch_size, sequence_length)
,可选) — 用于计算交叉熵分类损失的标签。索引应在[0, ..., config.vocab_size - 1]
中。
返回值
transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLSequenceClassifierOutputWithPast
或 tuple(tf.Tensor)
一个 transformers.models.deprecated.transfo_xl.modeling_tf_transfo_xl.TFTransfoXLSequenceClassifierOutputWithPast
或 tf.Tensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含根据配置(TransfoXLConfig)和输入的各种元素。
-
loss
(tf.Tensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类(如果config.num_labels==1
则为回归)损失。 -
logits
(tf.Tensor
,形状为(batch_size, config.num_labels)
) — 分类(如果config.num_labels==1
则为回归)得分(SoftMax 之前)。 -
mems
(List[tf.Tensor]
,长度为config.n_layers
) — 包含预计算的隐藏状态(注意力块中的键和值)。可用于(参见mems
输入)加速顺序解码。将其过去给予此模型的标记 id 不应作为输入 id 传递,因为它们已经计算过。 -
hidden_states
(tuple(tf.Tensor)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 一个用于每个层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(tf.Tensor)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
TFTransfoXLForSequenceClassification 的前向方法覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, TFTransfoXLForSequenceClassification
>>> import tensorflow as tf
>>> tokenizer = AutoTokenizer.from_pretrained("transfo-xl-wt103")
>>> model = TFTransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103")
>>> 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 = TFTransfoXLForSequenceClassification.from_pretrained("transfo-xl-wt103", num_labels=num_labels)
>>> labels = tf.constant(1)
>>> loss = model(**inputs, labels=labels).loss
内部层
class transformers.AdaptiveEmbedding
< source >
代码语言:javascript复制( n_token d_embed d_proj cutoffs div_val = 1 sample_softmax = False )
class transformers.TFAdaptiveEmbedding
< source >
代码语言:javascript复制( n_token d_embed d_proj cutoffs div_val = 1 init_std = 0.02 sample_softmax = False **kwargs )
UL2
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/ul2
概述
T5 模型在Yi Tay, Mostafa Dehghani, Vinh Q. Tran, Xavier Garcia, Dara Bahri, Tal Schuster, Huaixiu Steven Zheng, Neil Houlsby, Donald Metzler 撰写的《统一语言学习范式》中被提出。
论文的摘要如下:
现有的预训练模型通常针对特定类别的问题。迄今为止,关于正确的架构和预训练设置应该是什么,似乎仍然没有共识。本文提出了一个统一的框架,用于预训练模型在数据集和设置上具有普遍有效性。我们首先通过解开具有预训练目标的架构原型来开始——这两个概念通常被混淆。接下来,我们提出了自监督在 NLP 中的泛化和统一视角,并展示了不同的预训练目标如何相互转换以及如何在不同目标之间插值可以是有效的。然后,我们提出了去噪器混合(MoD),这是一个将不同的预训练范式结合在一起的预训练目标。此外,我们引入了一种模式切换的概念,其中下游微调与特定的预训练方案相关联。我们进行了大量的消融实验,比较了多个预训练目标,并发现我们的方法通过在多个不同设置中优于 T5 和/或类似 GPT 的模型来推动帕累托前沿。最后,通过将我们的模型扩展到 20B 参数,我们在 50 个建立良好的监督 NLP 任务上实现了 SOTA 性能,涵盖了语言生成(自动化和人工评估)、语言理解、文本分类、问题回答、常识推理、长文本推理、结构化知识基础和信息检索。我们的模型还在上下文学习方面取得了强大的结果,在零样本 SuperGLUE 上优于 175B 的 GPT-3,并在一次性摘要上将 T5-XXL 的性能提高了三倍。
此模型由DanielHesslow贡献。原始代码可以在这里找到。
使用提示
- UL2 是一个编码器-解码器模型,预先在一系列去噪函数的混合上进行了预训练,并在一系列下游任务上进行了微调。
- UL2 与 T5v1.1 具有相同的架构,但使用了门控 SiLU 激活函数,而不是门控 GELU。
- 作者发布了一个架构的检查点,可以在这里看到
由于 UL2 与 T5v1.1 具有相同的架构,请参考 T5 的文档页面获取 API 参考、提示、代码示例和笔记本。
UMT5
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/umt5
概述
UMT5 模型是由 Hyung Won Chung、Xavier Garcia、Adam Roberts、Yi Tay、Orhan Firat、Sharan Narang、Noah Constant 在UniMax: Fairer and More Effective Language Sampling for Large-Scale Multilingual Pretraining中提出的。
该论文的摘要如下:
预训练的多语言大型语言模型通常使用启发式基于温度的采样来平衡不同语言之间的关系。然而,先前的工作并没有系统评估不同预训练语言分布在模型规模上的有效性。在本文中,我们提出了一种新的采样方法 UniMax,通过明确限制每种语言语料库上的重复次数,提供更均匀的头部语言覆盖范围,同时减轻尾部语言的过拟合。我们进行了一系列广泛的消融实验,测试了一系列多语言基准测试的采样策略,同时改变模型规模。我们发现 UniMax 优于标准基于温度的采样,而这些优势随着规模的增加而持续存在。作为我们的贡献的一部分,我们发布了:(i)一个改进和更新的 mC4 多语言语料库,包括 107 种语言的 29 万亿个字符,以及(ii)一套使用 UniMax 采样训练的预训练 umT5 模型检查点。
Google 发布了以下变体:
- google/umt5-small
- google/umt5-base
- google/umt5-xl
- google/umt5-xxl。
该模型由agemagician和stefan-it贡献。原始代码可以在这里找到。
使用提示
- UMT5 仅在mC4上进行了预训练,不包括任何监督训练。因此,与原始 T5 模型不同,这个模型必须在可用于下游任务之前进行微调。
- 由于 umT5 是以无监督方式预训练的,因此在单任务微调期间使用任务前缀没有真正的优势。如果您正在进行多任务微调,应该使用前缀。
与 mT5 有何不同?
UmT5
基于 mT5,具有为每个层计算的非共享相对位置偏差。这意味着模型为每个层设置了has_relative_bias
。转换脚本也不同,因为该模型是以 t5x 的最新检查点格式保存的。
示例用法
代码语言:javascript复制>>> from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
>>> model = AutoModelForSeq2SeqLM.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> inputs = tokenizer(
... "A <extra_id_0> walks into a bar and orders a <extra_id_1> with <extra_id_2> pinch of <extra_id_3>.",
... return_tensors="pt",
... )
>>> outputs = model.generate(**inputs)
>>> print(tokenizer.batch_decode(outputs))
['<pad><extra_id_0>nyone who<extra_id_1> drink<extra_id_2> a<extra_id_3> alcohol<extra_id_4> A<extra_id_5> A. This<extra_id_6> I<extra_id_7><extra_id_52><extra_id_53></s>']
有关更多提示、代码示例和笔记,请参阅 T5 的文档页面。
UMT5Config
class transformers.UMT5Config
< source >
代码语言:javascript复制( vocab_size = 250112 d_model = 512 d_kv = 64 d_ff = 1024 num_layers = 8 num_decoder_layers = None num_heads = 6 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 = 'gated-gelu' is_encoder_decoder = True use_cache = True tokenizer_class = 'T5Tokenizer' tie_word_embeddings = True pad_token_id = 0 eos_token_id = 1 decoder_start_token_id = 0 classifier_dropout = 0.0 **kwargs )
参数
-
vocab_size
(int
, 可选, 默认为 250112) — UMT5 模型的词汇大小。定义了在调用 UMT5Model 或TFUMT5Model
时可以表示的不同标记的数量。 -
d_model
(int
, 可选, 默认为 512) — 编码器层和池化层的大小。 -
d_kv
(int
, 可选, 默认为 64) — 每个注意力头部的键、查询、值投影的大小。d_kv
必须等于d_model // num_heads
。 -
d_ff
(int
, 可选, 默认为 1024) — 每个UMT5Block
中间级前馈层的大小。 -
num_layers
(int
, 可选, 默认为 8) — Transformer 编码器中的隐藏层数量。 -
num_decoder_layers
(int
, 可选) — Transformer 解码器中的隐藏层数量。如果未设置,将使用与num_layers
相同的值。 -
num_heads
(int
, 可选, 默认为 6) — Transformer 编码器中每个注意力层的注意力头数。 -
relative_attention_num_buckets
(int
, 可选, 默认为 32) — 每个注意力层使用的桶数。 -
relative_attention_max_distance
(int
, 可选, 默认为 128) — 用于桶分离的较长序列的最大距离。 -
dropout_rate
(float
, 可选, 默认为 0.1) — 所有丢失层的比率。 -
classifier_dropout
(float
, 可选, 默认为 0.0) — 分类器的丢失比率。 -
layer_norm_eps
(float
, 可选, 默认为 1e-6) — 层归一化层使用的 epsilon。 -
initializer_factor
(float
, 可选, 默认为 1) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。 -
feed_forward_proj
(string
, 可选, 默认为"gated-gelu"
) — 要使用的前馈层类型。应该是"relu"
或"gated-gelu"
之一。 -
use_cache
(bool
, 可选, 默认为True
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。
这是一个配置类,用于存储 UMT5Model 的配置。根据指定的参数实例化一个 UMT5 模型,定义模型架构。使用默认值实例化配置将产生类似于 UMT5 google/umt5-small架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
UMT5 模型
class transformers.UMT5Model
<来源>
代码语言:javascript复制( config )
参数
config
(UMT5Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
UMT5 模型是一个裸的模型变压器,输出原始的隐藏状态,没有任何特定的头部。
UMT5 模型是由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本变压器迁移学习的极限中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器变压器。
这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。
示例:
代码语言:javascript复制>>> from transformers import UMT5Model, AutoTokenizer
>>> model = UMT5Model.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> noisy_text = "UN Offizier sagt, dass weiter <extra_id_0> werden muss in Syrien."
>>> label = "<extra_id_0> verhandelt"
>>> inputs = tokenizer(inputs, return_tensors="pt")
>>> labels = tokenizer(label=label, return_tensors="pt")
>>> outputs = model(input_ids=inputs["input_ids"], decoder_input_ids=labels["input_ids"])
>>> hidden_states = outputs.last_hidden_state
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。 可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? 要了解有关如何为预训练准备input_ids
的更多信息,请查看 UMT5 Training。 -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]
:- 1 表示
未被掩码
的标记, - 0 表示标记
被掩码
。
什么是注意力掩码?
- 1 表示
-
decoder_input_ids
(torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — 解码器输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? UMT5 使用pad_token_id
作为decoder_input_ids
生成的起始标记。如果使用past_key_values
,可选择仅输入最后的decoder_input_ids
(参见past_key_values
)。 要了解有关如何为预训练准备decoder_input_ids
的更多信息,请查看 UMT5 Training。 -
decoder_attention_mask
(torch.BoolTensor
of shape(batch_size, target_sequence_length)
, optional) — 默认行为:生成一个忽略decoder_input_ids
中填充标记的张量。因果掩码也将默认使用。 -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于在编码器的自注意力模块中使选定的头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部
未被掩码
, - 0 表示头部
被掩码
。
- 1 表示头部
-
decoder_head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于在解码器的自注意力模块中使选定的头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部
未被掩码
, - 0 表示头部被
掩码
。
- 1 表示头部
-
cross_attn_head_mask
(torch.Tensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于在解码器的交叉注意力模块中使选定的头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部
未被掩码
, - 0 表示头部
被掩码
。
- 1 表示头部
-
encoder_outputs
(tuple(tuple(torch.FloatTensor)
, optional) — 元组包括(last_hidden_state
,可选:hidden_states,可选:attentions)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
,长度为config.n_layers
,每个元组有 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的张量) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。 如果使用past_key_values
,用户可以选择仅输入最后的decoder_input_ids
(那些没有将其过去的键值状态提供给此模型的)的形状为(batch_size, 1)
,而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。 -
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权,以便将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
decoder_inputs_embeds
(torch.FloatTensor
of shape(batch_size, target_sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_ids
。如果使用past_key_values
,则可以选择仅输入最后的decoder_inputs_embeds
(请参见past_key_values
)。如果您想要更多控制权,以便将decoder_input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 如果decoder_input_ids
和decoder_inputs_embeds
都未设置,则decoder_inputs_embeds
取inputs_embeds
的值。 -
use_cache
(bool
, optional) — 如果设置为True
,则返回past_key_values
键值状态,可用于加速解码(请参见past_key_values
)。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。
返回
transformers.modeling_outputs.Seq2SeqModelOutput 或torch.FloatTensor
元组
transformers.modeling_outputs.Seq2SeqModelOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(UMT5Config)和输入的不同元素。
-
last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型解码器最后一层的隐藏状态序列的输出。 如果使用past_key_values
,则仅输出形状为(batch_size, 1, hidden_size)
序列的最后隐藏状态。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, optional, 当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(请参见past_key_values
输入)。 -
decoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层, 一个用于每一层的输出)。 解码器在每一层的输出处的隐藏状态以及可选的初始嵌入输出。 -
decoder_attentions
(tuple(torch.FloatTensor)
, 可选的, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(torch.FloatTensor)
, 可选的, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选的) — 模型编码器最后一层的隐藏状态序列。 -
encoder_hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入的输出 每层的输出)。 每层编码器的隐藏状态以及可选的初始嵌入输出。 -
encoder_attentions
(tuple(torch.FloatTensor)
, 可选的, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
UMT5Model 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在之后调用 Module
实例,而不是这个函数,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, UMT5Model
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> model = UMT5Model.from_pretrained("google/umt5-small")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids # Batch size 1
>>> # preprocess: Prepend decoder_input_ids with start token which is pad token for UMT5Model.
>>> # This is not needed for torch's UMT5ForConditionalGeneration as it does this internally using labels arg.
>>> decoder_input_ids = model._shift_right(decoder_input_ids)
>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
UMT5ForConditionalGeneration
class transformers.UMT5ForConditionalGeneration
< source >
代码语言:javascript复制( config )
参数
config
(UMT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
UMT5 模型顶部带有 language modeling
头部。
UMT5 模型是由 Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu 在 Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer 中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器 transformer。
这个模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module 子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
示例:
代码语言:javascript复制>>> from transformers import UMT5ForConditionalGeneration, AutoTokenizer
>>> model = UMT5ForConditionalGeneration.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
>>> summary = "Weiter Verhandlung in Syrien."
>>> inputs = tokenizer(article, text_target=summary, return_tensors="pt")
>>> outputs = model(**inputs)
>>> loss = outputs.loss
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None past_key_values: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqLMOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? 要了解有关如何为预训练准备input_ids
的更多信息,请查看 UMT5 训练。 -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。选定的掩码值为[0, 1]
:- 1 表示未被掩盖的标记,
- 0 表示被掩盖的标记。
什么是注意力掩码?
-
decoder_input_ids
(形状为(batch_size, target_sequence_length)
的torch.LongTensor
,可选)- 词汇表中解码器输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? UMT5 使用pad_token_id
作为decoder_input_ids
生成的起始标记。如果使用past_key_values
,可选择仅输入最后的decoder_input_ids
(参见past_key_values
)。 要了解有关如何为预训练准备decoder_input_ids
的更多信息,请查看 UMT5 训练。 -
decoder_attention_mask
(形状为(batch_size, target_sequence_length)
的torch.BoolTensor
,可选)- 默认行为:生成一个忽略decoder_input_ids
中填充标记的张量。因果掩码也将默认使用。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于在编码器中使自注意力模块的选定头部失效的掩码。选定的掩码值为[0, 1]
:- 1 表示头部未被掩盖,
- 0 表示头部被掩盖。
-
decoder_head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于在解码器中使自注意力模块的选定头部失效的掩码。选定的掩码值为[0, 1]
:- 1 表示头部未被掩盖,
- 0 表示头部被掩盖。
-
cross_attn_head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
,可选)- 用于在解码器中使交叉注意力模块的选定头部失效的掩码。选定的掩码值为[0, 1]
:- 1 表示头部未被掩盖,
- 0 表示头部被掩盖。
-
encoder_outputs
(tuple(tuple(torch.FloatTensor)
,可选)- 元组包括(last_hidden_state
,可选:hidden_states,可选:attentions)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。 -
past_key_values
(长度为
config.n_layers的
tuple(tuple(torch.FloatTensor)),每个元组包含 4 个形状为
(batch_size, num_heads, sequence_length - 1, embed_size_per_head)`的张量)- 包含注意力块的预计算键和值隐藏状态。可用于加速解码。 如果使用了past_key_values
,用户可以选择仅输入形状为(batch_size, 1)
的最后一个decoder_input_ids
(即那些没有将其过去的键值状态提供给此模型的输入),而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。 -
inputs_embeds
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
decoder_inputs_embeds
(torch.FloatTensor
,形状为(batch_size, target_sequence_length, hidden_size)
,optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_ids
。如果使用了past_key_values
,可以选择仅输入最后一个decoder_inputs_embeds
(参见past_key_values
)。如果您想要更多控制如何将decoder_input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 如果decoder_input_ids
和decoder_inputs_embeds
都未设置,则decoder_inputs_embeds
取inputs_embeds
的值。 -
use_cache
(bool
, optional) — 如果设置为True
,将返回past_key_values
键值状态,并可用于加速解码(请参见past_key_values
)。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。 -
labels
(torch.LongTensor
,形状为(batch_size,)
,optional) — 用于计算序列分类/回归损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]
范围内。所有标签设置为-100
都将被忽略(掩码),损失仅计算[0, ..., config.vocab_size]
范围内的标签。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqLMOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含各种元素,这取决于配置(UMT5Config)和输入。
-
loss
(torch.FloatTensor
,形状为(1,)
,optional),当提供labels
时返回 — 语言建模损失。 -
logits
(torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, optional, 当传递use_cache=True
或config.use_cache=True
时返回 — 长度为config.n_layers
的元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(请参见past_key_values
输入)。 -
decoder_hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入层的输出 每层的输出)。 解码器在每一层的输出以及初始嵌入输出的隐藏状态。 -
decoder_attentions
(tuple(torch.FloatTensor)
, 可选的, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(torch.FloatTensor)
, 可选的, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选的) — 模型编码器最后一层的隐藏状态序列。 -
encoder_hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入层的输出 每层的输出)。 编码器在每一层的输出以及初始嵌入输出的隐藏状态。 -
encoder_attentions
(tuple(torch.FloatTensor)
, 可选的, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
UMT5ForConditionalGeneration 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, UMT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> model = UMT5ForConditionalGeneration.from_pretrained("google/umt5-small")
>>> # training
>>> 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
>>> outputs = model(input_ids=input_ids, labels=labels)
>>> loss = outputs.loss
>>> logits = outputs.logits
>>> # inference
>>> input_ids = tokenizer("Studies have shown that <extra_id_0> good for you", return_tensors="pt").input_ids
>>> outputs = model.generate(input_ids)
>>> tokenizer.decode(outputs[0], skip_special_tokens=True)
UMT5 编码器模型
class transformers.UMT5EncoderModel
< source >
代码语言:javascript复制( config )
参数
config
(UMT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸的 UMT5 模型变压器,输出编码器的原始隐藏状态,没有特定的头部。
UMT5 模型是由 Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu 在探索统一文本到文本 Transformer 的迁移学习极限中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器解码器 Transformer。
该模型继承自 PreTrainedModel。检查超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
该模型还是一个 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
示例:
代码语言:javascript复制>>> from transformers import UMT5EncoderModel, AutoTokenizer
>>> model = UMT5EncoderModel.from_pretrained("google/umt5-small")
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> article = "UN Offizier sagt, dass weiter verhandelt werden muss in Syrien."
>>> input_ids = tokenizer(article, return_tensors="pt").input_ids
>>> outputs = model(input_ids)
>>> hidden_state = outputs.last_hidden_state
forward
< source >
代码语言:javascript复制( 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 return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.BaseModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 要了解有关如何为预训练准备input_ids
的更多信息,请查看 UMT5 Training。 -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 表示未被
masked
的标记, - 0 表示被
masked
的标记。
什么是注意力掩码?
- 1 表示未被
-
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部是
not masked
, - 0 表示头部是
masked
。
- 1 表示头部是
-
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。
返回
transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含根据配置(UMT5Config)和输入的不同元素。
-
last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入的输出 每个层的输出)的形状为(batch_size, sequence_length, hidden_size)
。 模型在每个层的输出的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) —torch.FloatTensor
元组(每个层一个)的形状为(batch_size, num_heads, sequence_length, sequence_length)
。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
UMT5EncoderModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, UMT5EncoderModel
>>> tokenizer = AutoTokenizer.from_pretrained("google/umt5-small")
>>> model = UMT5EncoderModel.from_pretrained("google/umt5-small")
>>> 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
UMT5ForSequenceClassification
class transformers.UMT5ForSequenceClassification
<来源>
代码语言:javascript复制( config: UMT5Config )
参数
config
(UMT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
UMT5 模型在顶部具有序列分类/头(在汇聚输出之上的线性层),例如用于 GLUE 任务。
UMT5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本 Transformer 的迁移学习极限中提出。它是在文本到文本去噪生成设置中预训练的编码器解码器 Transformer。
此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型还是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以了解所有与一般用法和行为相关的事项。
forward
<来源>
代码语言:javascript复制( input_ids: LongTensor = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
) — 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()以获取详细信息。 什么是输入 ID? 要了解如何为预训练准备input_ids
,请查看 UMT5 Training。 -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。在[0, 1]
中选择的掩码值:- 1 表示未被“掩盖”的标记,
- 0 表示被“掩盖”的标记。
什么是注意力掩码?
-
decoder_input_ids
(形状为(batch_size, target_sequence_length)
的torch.LongTensor
,可选)— 解码器输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是解码器输入标识? UMT5 使用pad_token_id
作为decoder_input_ids
生成的起始标记。如果使用past_key_values
,则只需输入最后的decoder_input_ids
(参见past_key_values
)。 要了解有关如何为预训练准备decoder_input_ids
的更多信息,请查看 UMT5 Training。 -
decoder_attention_mask
(形状为(batch_size, target_sequence_length)
的torch.BoolTensor
,可选)— 默认行为:生成一个忽略decoder_input_ids
中填充标记的张量。因果掩码也将默认使用。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于在编码器的自注意力模块中使选定的头部失效的掩码。在[0, 1]
中选择的掩码值:- 1 表示头部未被“掩盖”,
- 0 表示头部被“掩盖”。
-
decoder_head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于在解码器的自注意力模块中使选定的头部失效的掩码。在[0, 1]
中选择的掩码值:- 1 表示头部未被“掩盖”,
- 0 表示头部被“掩盖”。
-
cross_attn_head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
,可选)— 用于在解码器的交叉注意力模块中使选定的头部失效的掩码。在[0, 1]
中选择的掩码值:- 1 表示头部未被“掩盖”,
- 0 表示头部被“掩盖”。
-
encoder_outputs
(tuple(tuple(torch.FloatTensor)
,可选)— 元组包括(last_hidden_state
,可选:hidden_states,可选:attentions)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。 -
past_key_values
(长度为config.n_layers
的tuple(tuple(torch.FloatTensor))
,每个元组有 4 个形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的张量)— 包含注意力块的预计算键和值隐藏状态。可用于加速解码。 如果使用past_key_values
,用户可以选择仅输入最后的decoder_input_ids
(即那些没有将其过去键值状态提供给此模型的)的形状为(batch_size, 1)
的张量,而不是所有形状为(batch_size, sequence_length)
的decoder_input_ids
。 -
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权,以便将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
decoder_inputs_embeds
(torch.FloatTensor
of shape(batch_size, target_sequence_length, hidden_size)
, 可选) — 可选择直接传递嵌入表示,而不是传递decoder_input_ids
。如果使用了past_key_values
,则只需输入最后的decoder_inputs_embeds
(参见past_key_values
)。如果您想要更多控制如何将decoder_input_ids
索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。 如果decoder_input_ids
和decoder_inputs_embeds
都未设置,则decoder_inputs_embeds
取inputs_embeds
的值。 -
use_cache
(bool
, 可选) — 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。 -
output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。 -
labels
(torch.LongTensor
of shape(batch_size,)
, 可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回值
transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqSequenceClassifierOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含各种元素,取决于配置(UMT5Config)和输入。
-
loss
(torch.FloatTensor
of shape(1,)
, 可选, 当提供label
时返回) — 分类(如果config.num_labels==1
则为回归)损失。 -
logits
(torch.FloatTensor
of shape(batch_size, config.num_labels)
) — 分类(如果config.num_labels==1
则为回归)得分(SoftMax 之前)。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, 可选, 当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(参见past_key_values
输入)。 -
decoder_hidden_states
(tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入输出的一个,加上每层的输出一个)。 每层解码器的隐藏状态加上每层初始嵌入输出。 -
decoder_attentions
(tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 模型编码器最后一层的隐藏状态序列。 -
encoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入输出的一个,加上每层的输出的一个)。 每层编码器的隐藏状态加上初始嵌入输出。 -
encoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
UMT5ForSequenceClassification 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
UMT5ForQuestionAnswering
class transformers.UMT5ForQuestionAnswering
<来源>
代码语言:javascript复制( config )
参数
config
(UMT5Config) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
UMT5 模型在顶部具有一个用于提取式问答任务(如 SQuAD)的跨度分类头(线性层在隐藏状态输出之上用于计算跨度起始 logits
和跨度结束 logits
)。
UMT5 模型由 Colin Raffel、Noam Shazeer、Adam Roberts、Katherine Lee、Sharan Narang、Michael Matena、Yanqi Zhou、Wei Li、Peter J. Liu 在探索统一文本到文本 Transformer 的迁移学习极限中提出。它是一个在文本到文本去噪生成设置中预训练的编码器解码器 Transformer。
此模型继承自 PreTrainedModel。检查超类文档以获取库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None decoder_input_ids: Optional = None decoder_attention_mask: Optional = None head_mask: Optional = None decoder_head_mask: Optional = None cross_attn_head_mask: Optional = None encoder_outputs: Optional = None start_positions: Optional = None end_positions: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None use_cache: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。UMT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? 要了解有关如何为预训练准备input_ids
的更多信息,请查看 UMT5 Training。 -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]
:- 1 表示未被遮蔽的标记,
- 0 表示被遮蔽的标记。
什么是注意力掩码?
-
decoder_input_ids
(torch.LongTensor
of shape(batch_size, target_sequence_length)
, optional) — 词汇表中解码器输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? UMT5 使用pad_token_id
作为decoder_input_ids
生成的起始标记。如果使用past_key_values
,则只需输入最后的decoder_input_ids
(请参阅past_key_values
)。 要了解有关如何为预训练准备decoder_input_ids
的更多信息,请查看 UMT5 Training。 -
decoder_attention_mask
(torch.BoolTensor
of shape(batch_size, target_sequence_length)
, optional) — 默认行为:生成一个张量,忽略decoder_input_ids
中的填充标记。因果掩码也将默认使用。 -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于在编码器的自注意力模块中使选定头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
-
decoder_head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于在解码器的自注意力模块中使选定头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
-
cross_attn_head_mask
(torch.Tensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于在解码器中使交叉注意力模块中的选定头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部未被遮蔽,
- 0 表示头部被遮蔽。
-
encoder_outputs
(tuple(tuple(torch.FloatTensor)
, optional) — 元组包括(last_hidden_state
,可选:hidden_states,可选:attentions)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,是编码器最后一层的隐藏状态序列。用于解码器的交叉注意力。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
of lengthconfig.n_layers
with each tuple having 4 tensors of shape(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
) — 包含注意力块的预计算键和值隐藏状态。可用于加速解码。 如果使用past_key_values
,用户可以选择仅输入最后一个decoder_input_ids
(那些没有将其过去的键值状态提供给此模型的)的形状为(batch_size, 1)
,而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。 -
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
decoder_inputs_embeds
(torch.FloatTensor
of shape(batch_size, target_sequence_length, hidden_size)
, optional) — 可选,您可以选择直接传递嵌入表示,而不是传递decoder_input_ids
。如果使用past_key_values
,可以选择仅输入最后一个decoder_inputs_embeds
(参见past_key_values
)。如果您想要更多控制权来将decoder_input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 如果decoder_input_ids
和decoder_inputs_embeds
都未设置,则decoder_inputs_embeds
取inputs_embeds
的值。 -
use_cache
(bool
, optional) — 如果设置为True
,则返回past_key_values
键值状态,并可用于加速解码(参见past_key_values
)。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。 -
start_positions
(torch.LongTensor
of shape(batch_size,)
, optional) — 用于计算标记跨度开始位置的位置(索引)的标签。位置被夹紧到序列的长度(sequence_length)。超出序列范围的位置不会被考虑在内计算损失。 -
end_positions
(torch.LongTensor
of shape(batch_size,)
, optional) — 用于计算标记跨度结束位置的位置(索引)的标签。位置被夹紧到序列的长度(sequence_length)。超出序列范围的位置不会被考虑在内计算损失。
返回
transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqQuestionAnsweringModelOutput 或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含根据配置(UMT5Config)和输入的各种元素。
-
loss
(torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 总跨度提取损失是开始和结束位置的交叉熵之和。 -
start_logits
(torch.FloatTensor
of shape(batch_size, sequence_length)
) — 跨度开始分数(SoftMax 之前)。 -
end_logits
(torch.FloatTensor
of shape(batch_size, sequence_length)
) — 跨度结束分数(SoftMax 之前)。 -
past_key_values
(tuple(tuple(torch.FloatTensor))
, optional, 当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,以及 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(参见past_key_values
输入)。 -
decoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层的话, 一个用于每个层的输出)。 解码器每一层的隐藏状态加上初始嵌入输出。 -
decoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 模型编码器最后一层的隐藏状态序列。 -
encoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层的话, 一个用于每个层的输出)。 编码器每一层的隐藏状态加上初始嵌入输出。 -
encoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
UMT5ForQuestionAnswering 的前向方法重写了__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行前后处理步骤,而后者会默默地忽略它们。
torch.FloatTensor
of shape (batch_size, sequence_length)
) — 跨度结束分数(SoftMax 之前)。
-
past_key_values
(tuple(tuple(torch.FloatTensor))
, optional, 当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(torch.FloatTensor)
元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,以及 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块和交叉注意力块中的键和值),可用于加速顺序解码(参见past_key_values
输入)。 -
decoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层的话, 一个用于每个层的输出)。 解码器每一层的隐藏状态加上初始嵌入输出。 -
decoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,optional) — 模型编码器最后一层的隐藏状态序列。 -
encoder_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入层的输出,如果模型有嵌入层的话, 一个用于每个层的输出)。 编码器每一层的隐藏状态加上初始嵌入输出。 -
encoder_attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每个层一个)。 编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
UMT5ForQuestionAnswering 的前向方法重写了__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行前后处理步骤,而后者会默默地忽略它们。