Transformers 4.37 中文文档(五十一)(4)

简介: Transformers 4.37 中文文档(五十一)

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

PhoBERT

概述

PhoBERT 模型由 Dat Quoc Nguyen 和 Anh Tuan Nguyen 在PhoBERT: Pre-trained language models for Vietnamese中提出。

论文摘要如下:

我们提出了两个版本的 PhoBERT,PhoBERT-base 和  PhoBERT-large,这是为越南语预训练的第一个公共大规模单语言模型。实验结果表明,PhoBERT 始终优于最近的最佳预训练多语言模型  XLM-R(Conneau 等,2020),并改进了多个越南特定的 NLP  任务的最新技术,包括词性标注、依存句法分析、命名实体识别和自然语言推理。

此模型由dqnguyen贡献。原始代码可在此处找到。

用法示例

>>> import torch
>>> from transformers import AutoModel, AutoTokenizer
>>> phobert = AutoModel.from_pretrained("vinai/phobert-base")
>>> tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base")
>>> # INPUT TEXT MUST BE ALREADY WORD-SEGMENTED!
>>> line = "Tôi là sinh_viên trường đại_học Công_nghệ ."
>>> input_ids = torch.tensor([tokenizer.encode(line)])
>>> with torch.no_grad():
...     features = phobert(input_ids)  # Models outputs are now tuples
>>> # With TensorFlow 2.0+:
>>> # from transformers import TFAutoModel
>>> # phobert = TFAutoModel.from_pretrained("vinai/phobert-base")

PhoBERT 实现与 BERT 相同,除了分词。有关配置类及其参数的信息,请参考 EART 文档。下面记录了 PhoBERT 特定的标记器。

PhobertTokenizer

class transformers.PhobertTokenizer

< source >

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

参数

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

构建一个 PhoBERT 标记器。基于字节对编码。

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

add_from_file

< source >

( f )

从文本文件加载现有字典并将其符号添加到此实例。

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

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

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

convert_tokens_to_string

<来源>

( tokens )

将一系列标记(字符串)转换为单个字符串。

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]

零的列表。

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

get_special_tokens_mask

<来源>

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

参数

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

返回

List[int]

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

从没有添加特殊标记的标记列表中检索序列 ID。当使用分词器的prepare_for_model方法添加特殊标记时,将调用此方法。

PLBart


概述

PLBART 模型是由 Wasi Uddin Ahmad、Saikat Chakraborty、Baishakhi Ray、Kai-Wei Chang 在统一的程序理解和生成预训练中提出的。这是一个类似 BART 的模型,可用于执行代码摘要、代码生成和代码翻译任务。预训练模型plbart-base是通过 Java、Python 和英语上的多语言去噪任务进行训练的。

根据摘要

代码摘要和生成使编程语言(PL)和自然语言(NL)之间的转换变得更加强大,而代码翻译则可实现从一种 PL 到另一种 PL  的遗留代码迁移。本文介绍了 PLBART,这是一个序列到序列模型,能够执行广泛的程序和语言理解和生成任务。PLBART 在大量的 Java 和  Python 函数以及相关的 NL  文本上进行了预训练,通过去噪自编码。在英语语言的代码摘要、代码生成以及七种编程语言的代码翻译实验中,PLBART  表现出优于或与最先进模型相媲美的性能。此外,在区分性任务上的实验,如程序修复、克隆检测和易受攻击代码检测,展示了 PLBART  在程序理解方面的有效性。此外,分析显示 PLBART 学习了对程序语法、风格(例如标识符命名约定)、逻辑流程(例如 if 块在 else  块内等同于 else if 块)等对程序语义至关重要的内容,因此即使有限的注释也能表现出色。

此模型由gchhablani贡献。作者的代码可以在这里找到。

使用示例

PLBart 是一个多语言编码器-解码器(序列到序列)模型,主要用于代码到文本、文本到代码、代码到代码任务。由于该模型是多语言的,因此它期望序列以不同的格式提供。在源文本和目标文本中都添加了特殊的语言 id 标记。源文本格式为X [eos, src_lang_code],其中X是源文本。目标文本格式为[tgt_lang_code] X [eos]bos从未被使用。

然而,在一些情况下,对于微调,当只使用一种语言时,不提供语言标记。请参考论文以了解更多信息。

在需要语言代码的情况下,常规的call()将对源文本格式进行编码,当您将文本作为第一个参数传递或使用关键字参数text时,将对目标文本格式进行编码,如果使用text_target关键字参数传递目标文本格式。

监督训练

>>> from transformers import PLBartForConditionalGeneration, PLBartTokenizer
>>> tokenizer = PLBartTokenizer.from_pretrained("uclanlp/plbart-base", src_lang="en_XX", tgt_lang="python")
>>> example_python_phrase = "def maximum(a,b,c):NEW_LINE_INDENTreturn max([a,b,c])"
>>> expected_translation_english = "Returns the maximum value of a b c."
>>> inputs = tokenizer(example_python_phrase, text_target=expected_translation_english, return_tensors="pt")
>>> model(**inputs)

生成

在生成目标文本时,将decoder_start_token_id设置为目标语言的 id。以下示例展示了如何使用uclanlp/plbart-python-en_XX模型将 Python 翻译成英语。

>>> from transformers import PLBartForConditionalGeneration, PLBartTokenizer
>>> tokenizer = PLBartTokenizer.from_pretrained("uclanlp/plbart-python-en_XX", src_lang="python", tgt_lang="en_XX")
>>> example_python_phrase = "def maximum(a,b,c):NEW_LINE_INDENTreturn max([a,b,c])"
>>> inputs = tokenizer(example_python_phrase, return_tensors="pt")
>>> model = PLBartForConditionalGeneration.from_pretrained("uclanlp/plbart-python-en_XX")
>>> translated_tokens = model.generate(**inputs, decoder_start_token_id=tokenizer.lang_code_to_id["en_XX"])
>>> tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
"Returns the maximum value of a b c."

资源

  • 文本分类任务指南
  • 因果语言建模任务指南
  • 翻译任务指南
  • 摘要任务指南

PLBartConfig

class transformers.PLBartConfig

<来源>

( vocab_size = 50005 max_position_embeddings = 1024 encoder_layers = 6 encoder_ffn_dim = 3072 encoder_attention_heads = 12 decoder_layers = 6 decoder_ffn_dim = 3072 decoder_attention_heads = 12 encoder_layerdrop = 0.0 decoder_layerdrop = 0.0 use_cache = True is_encoder_decoder = True activation_function = 'gelu' d_model = 768 dropout = 0.1 attention_dropout = 0.1 activation_dropout = 0.0 init_std = 0.02 classifier_dropout = 0.0 scale_embedding = True pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 forced_eos_token_id = 2 **kwargs )

参数

  • vocab_sizeint可选,默认为 50005)— PLBART 模型的词汇表大小。定义了在调用 PLBartModel 时可以由inputs_ids表示的不同标记数量。
  • d_model (int, 可选, 默认为 768) — 层和池化层的维度。
  • encoder_layers (int, 可选, 默认为 6) — 编码器层数。
  • decoder_layers (int, 可选, 默认为 6) — 解码器层数。
  • encoder_attention_heads (int, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。
  • decoder_attention_heads (int, 可选, 默认为 12) — Transformer 解码器中每个注意力层的注意力头数。
  • decoder_ffn_dim (int, 可选, 默认为 3072) — 解码器中“中间”(通常称为前馈)层的维度。
  • encoder_ffn_dim (int, 可选, 默认为 3072) — 解码器中“中间”(通常称为前馈)层的维度。
  • activation_function (strfunction, 可选, 默认为"gelu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu""relu""silu""gelu_new"
  • dropout (float, 可选, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_dropout (float, 可选, 默认为 0.1) — 注意力概率的 dropout 比率。
  • activation_dropout (float, 可选, 默认为 0.0) — 全连接层内激活的 dropout 比率。
  • classifier_dropout (float, 可选, 默认为 0.0) — 分类器的 dropout 比率。
  • max_position_embeddings (int, 可选, 默认为 1024) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如 512、1024 或 2048)。
  • init_std (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • encoder_layerdrop (float, 可选, 默认为 0.0) — 编码器的 LayerDrop 概率。有关更多详细信息,请参阅 LayerDrop 论文)。
  • decoder_layerdrop (float, 可选, 默认为 0.0) — 解码器的 LayerDrop 概率。有关更多详细信息,请参阅 LayerDrop 论文)。
  • scale_embedding (bool, 可选, 默认为True) — 通过 sqrt(d_model)缩放嵌入。
  • use_cache (bool, 可选, 默认为True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。
  • forced_eos_token_id (int, 可选, 默认为 2) — 当达到max_length时,强制作为最后生成的标记的标记 ID。通常设置为eos_token_id

这是用于存储 PLBartModel 配置的配置类。它用于根据指定的参数实例化一个 PLBART 模型,定义模型架构。使用默认值实例化配置将产生类似于 PLBART uclanlp/plbart-base架构的配置。

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

示例:

>>> from transformers import PLBartConfig, PLBartModel
>>> # Initializing a PLBART uclanlp/plbart-base style configuration
>>> configuration = PLBartConfig()
>>> # Initializing a model (with random weights) from the uclanlp/plbart-base style configuration
>>> model = PLBartModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

PLBartTokenizer

class transformers.PLBartTokenizer

<来源>

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

参数

  • vocab_file (str) — 词汇文件的路径。
  • src_lang (str, 可选) — 表示源语言的字符串。
  • tgt_lang (str, 可选) — 表示目标语言的字符串。
  • bos_tokenstr可选,默认为"")— 序列开始标记。
  • eos_tokenstr可选,默认为"")— 序列结束标记。
  • sep_tokenstr可选,默认为"")— 用于从多个序列构建序列时使用的分隔符标记,例如,用于序列分类的两个序列或用于问答的文本和问题。它还用作使用特殊标记构建的序列的最后一个标记。
  • cls_tokenstr可选,默认为"")— cls 标记,用作所有任务的第一个标记。
  • unk_tokenstr可选,默认为"")— 未知标记。词汇表中没有的标记无法转换为 ID,而是设置为此标记。
  • pad_tokenstr可选,默认为"")— 用于填充的标记,例如,当批处理不同长度的序列时。
  • mask_tokenstr可选,默认为"")— 用于屏蔽值的标记。这是在使用屏蔽任务训练此模型时使用的标记。仅在"base"分词器类型中使用。对于"multi"分词器,下游任务永远不会进行屏蔽。
  • language_codesstr可选,默认为"base")— 要使用的语言代码。应为"base""multi"之一。
  • 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 合并操作的丢弃概率。

构建一个 PLBART 分词器。

改编自 RobertaTokenizer 和 XLNetTokenizer。基于SentencePiece

分词方法为源语言文档的  ,以及

` 用于目标语言文档。

示例:

>>> from transformers import PLBartTokenizer
>>> tokenizer = PLBartTokenizer.from_pretrained("uclanlp/plbart-python-en_XX", src_lang="python", tgt_lang="en_XX")
>>> example_python_phrase = "def maximum(a,b,c):NEW_LINE_INDENTreturn max([a,b,c])"
>>> expected_translation_english = "Returns the maximum value of a b c."
>>> inputs = tokenizer(example_python_phrase, text_target=expected_translation_english, return_tensors="pt")
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 列表。

通过连接和添加特殊标记从序列或序列对构建用于序列分类任务的模型输入。PLBART 序列具有以下格式,其中X表示序列:

  • input_ids(用于编码器)X [eos, src_lang_code]
  • decoder_input_ids:(用于解码器)X [eos, tgt_lang_code]

BOS 从不使用。序列对不是预期的用例,但它们将被处理而无需分隔符。

PLBartModel

class transformers.PLBartModel

<来源>

( config: PLBartConfig )

参数

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

裸的 PLBART 模型输出原始隐藏状态,没有特定的头部。此模型继承自 PreTrainedModel。查看超类文档,了解库为其所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

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

forward

<来源>

( 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(形状为(batch_size, sequence_length)torch.LongTensor)- 词汇表中输入序列标记的索引。默认情况下,如果提供填充,则将忽略填充。
    可以使用 AutoTokenizer 或PLBartMultiTokenizer获取索引,具体取决于检查点。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是输入 ID?
  • attention_mask(形状为(batch_size, sequence_length)torch.Tensor可选)- 用于避免在填充标记索引上执行注意力。蒙版值在[0, 1]中选择:
  • 对于未被masked的标记为 1,
  • 对于被masked的标记为 0。
  • 什么是注意力蒙版?
  • decoder_input_ids(形状为(batch_size, target_sequence_length)torch.LongTensor可选)- 词汇表中解码器输入序列标记的索引。
    可以使用 AutoTokenizer 或PLBartMultiTokenizer获取索引,具体取决于检查点。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call()。
    什么是解码器输入 ID?
    PLBart 使用特定的语言 ID 标记作为decoder_input_ids生成的起始标记,根据源语言和目标语言而变化,例如en_XX为 50003,java为 50001。如果使用past_key_values,可选择仅输入最后的decoder_input_ids(参见past_key_values)。
    对于翻译和摘要训练,应提供decoder_input_ids。如果未提供decoder_input_ids,模型将通过将input_ids向右移动来创建此张量,用于去噪预训练,遵循论文。
  • decoder_attention_mask(- 形状为(batch_size, target_sequence_length)torch.LongTensor可选):默认行为:生成一个张量,忽略decoder_input_ids中的填充标记。因果蒙版也将默认使用。
  • head_mask(形状为(encoder_layers, encoder_attention_heads)torch.Tensor可选)- 用于在编码器中使选定的注意力模块头部无效的蒙版。蒙版值在[0, 1]中选择:
  • 1 表示头部未被masked
  • 0 表示头部被masked
  • decoder_head_masktorch.Tensor,形状为(decoder_layers, decoder_attention_heads)可选) — 用于使解码器中注意模块的选定头部失效的掩码。在[0, 1]中选择的掩码值:
  • 1 表示头部未被掩盖,
  • 0 表示头部被掩盖。
  • cross_attn_head_mask(— obj:torch.Tensor,形状为(decoder_layers, decoder_attention_heads)可选):用于使解码器中交叉注意模块的选定头部失效的掩码。在[0, 1]中选择的掩码值:
  • 1 表示头部未被掩盖,
  • 0 表示头部被掩盖。
  • encoder_outputstuple(tuple(torch.FloatTensor)可选) — 元组包括(last_hidden_state可选hidden_states可选attentionslast_hidden_state的形状为(batch_size, sequence_length, hidden_size)可选)是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意。
  • past_key_values(— obj:tuple(tuple(torch.FloatTensor))可选,当传递use_cache=Trueconfig.use_cache=True时返回):长度为config.n_layerstuple(torch.FloatTensor)元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)的张量和 2 个额外的形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)的张量。
    包含预先计算的隐藏状态(自注意块和交叉注意块中的键和值),可用于加速顺序解码(参见past_key_values输入)。
    如果使用了past_key_values,用户可以选择仅输入最后一个形状为(batch_size, 1)decoder_input_ids(那些没有将其过去的键值状态提供给此模型的输入)。
  • inputs_embeds(— obj:torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选):可选地,您可以选择直接传递嵌入表示,而不是传递input_ids。如果您想要更多控制权来将input_ids索引转换为相关向量,而不是模型内部的嵌入查找矩阵,则这很有用。
  • decoder_inputs_embeds(— obj:torch.FloatTensor,形状为(batch_size, target_sequence_length, hidden_size)可选):可选地,您可以选择直接传递嵌入表示,而不是传递decoder_input_ids。如果使用了past_key_values,则可以选择仅输入最后一个decoder_inputs_embeds的形状(参见past_key_values)。如果您想要更多控制权来将decoder_input_ids索引转换为相关向量,而不是模型内部的嵌入查找矩阵。
    如果decoder_input_idsdecoder_inputs_embeds都未设置,则decoder_inputs_embedsinputs_embeds的值。
  • use_cache (bool, optional) — 如果设置为True,则返回past_key_values键值状态,并可用于加速解码(参见past_key_values)。
  • output_attentionsbool可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
  • output_hidden_statesbool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
  • return_dictbool可选) — 是否返回 ModelOutput 而不是普通元组。

返回

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

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

  • 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)), 可选, 当传递use_cache=Trueconfig.use_cache=True时返回) — 长度为config.n_layerstuple(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=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组。
    每层解码器的隐藏状态以及可选的初始嵌入输出。
  • decoder_attentions (tuple(torch.FloatTensor), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组。
    解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
  • cross_attentions (tuple(torch.FloatTensor), 可选, 当传递output_attentions=Trueconfig.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), 可选) — 模型编码器最后一层的隐藏状态序列。
  • encoder_hidden_states (tuple(torch.FloatTensor), 可选, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组。
    每层编码器的隐藏状态以及可选的初始嵌入输出。
  • encoder_attentions (tuple(torch.FloatTensor), 可选, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)torch.FloatTensor元组。
    编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

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

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

示例:

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

Transformers 4.37 中文文档(五十一)(5)https://developer.aliyun.com/article/1565779

相关文章
|
4月前
|
存储 编解码 PyTorch
Transformers 4.37 中文文档(四十七)(1)
Transformers 4.37 中文文档(四十七)
29 6
|
4月前
|
缓存 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十一)(2)
Transformers 4.37 中文文档(五十一)
47 1
|
4月前
|
存储 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十一)(1)
Transformers 4.37 中文文档(五十一)
173 1
|
4月前
|
缓存 Java PyTorch
Transformers 4.37 中文文档(五十一)(5)
Transformers 4.37 中文文档(五十一)
29 1
|
4月前
|
缓存 PyTorch 算法框架/工具
Transformers 4.37 中文文档(五十一)(3)
Transformers 4.37 中文文档(五十一)
43 1
|
4月前
|
TensorFlow 算法框架/工具 索引
Transformers 4.37 中文文档(五十三)(5)
Transformers 4.37 中文文档(五十三)
31 1
|
4月前
|
PyTorch 算法框架/工具 索引
Transformers 4.37 中文文档(五十三)(3)
Transformers 4.37 中文文档(五十三)
30 1
|
4月前
|
PyTorch TensorFlow 算法框架/工具
Transformers 4.37 中文文档(五十三)(4)
Transformers 4.37 中文文档(五十三)
22 1
|
4月前
|
PyTorch 算法框架/工具 计算机视觉
Transformers 4.37 中文文档(六十四)(4)
Transformers 4.37 中文文档(六十四)
24 1
|
4月前
|
缓存 自然语言处理 PyTorch
Transformers 4.37 中文文档(五十三)(1)
Transformers 4.37 中文文档(五十三)
69 0