原文:
huggingface.co/docs/transformers
LongT5
原始文本:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/longt5
概述
LongT5 模型是由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在LongT5: Efficient Text-To-Text Transformer for Long Sequences中提出的。它是在文本到文本去噪生成设置中预训练的编码器-解码器变压器。LongT5 模型是 T5 模型的扩展,它可以使用两种不同的高效注意力机制之一——(1)局部注意力,或(2)瞬时全局注意力。
论文摘要如下:
最近的工作表明,要么增加输入长度,要么增加模型大小可以提高基于 Transformer 的神经模型的性能。在本文中,我们提出了一个名为 LongT5 的新模型,通过该模型我们同时探索了扩展输入长度和模型大小的效果。具体来说,我们将长输入变压器(ETC)的注意力思想与摘要预训练(PEGASUS)的预训练策略整合到可扩展的 T5 架构中。结果是一个我们称之为“瞬时全局”(TGlobal)的新注意力机制,模仿了 ETC 的局部/全局注意力机制,但不需要额外的辅助输入。我们能够在几个摘要任务上取得最先进的结果,并在问答任务上胜过原始的 T5 模型。
这个模型是由stancld贡献的。原始代码可以在这里找到。
使用提示
- LongT5ForConditionalGeneration 是 T5ForConditionalGeneration 的扩展,用高效的“局部”注意力或“瞬时全局”(tglobal)注意力交换传统的编码器“自注意力”层。
- 与 T5 模型不同,LongT5 不使用任务前缀。此外,它使用了受 PegasusForConditionalGeneration 预训练启发的不同预训练目标。
- LongT5 模型旨在在输入序列超过常用的 512 个标记的长距离序列任务上高效地运行并表现良好。它能够处理长度长达 16,384 个标记的输入序列。
- 对于“局部注意力”,稀疏滑动窗口局部注意力操作允许给定标记仅关注其左右
r
个标记(默认为r=127
)。“局部注意力”不向模型引入任何新参数。该机制的复杂度与输入序列长度l
呈线性关系:O(l*r)
。 - “瞬时全局注意力”是“局部注意力”的扩展。此外,它允许每个输入标记与该层中的所有其他标记进行交互。这是通过将输入序列分割为固定长度
k
的块(默认为k=16
)来实现的。然后,通过对该块中每个标记的嵌入进行求和和归一化,获得该块的全局标记。由于这一点,注意力机制允许每个标记既关注像局部注意力中的附近标记,也关注像标准全局注意力中的每个全局标记(“瞬时”表示全局标记在每个注意力操作中动态构建)。因此,“TGlobal”注意力引入了一些新参数——全局相对位置偏差和全局标记嵌入的层归一化。该机制的复杂度为O(l(r l/k))
。 - 下面是一个示例,展示了如何在pubmed 数据集上评估一个经过精调的 LongT5 模型。
>>> import evaluate
>>> from datasets import load_dataset
>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration
>>> dataset = load_dataset("scientific_papers", "pubmed", split="validation")
>>> model = (
... LongT5ForConditionalGeneration.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
... .to("cuda")
... .half()
... )
>>> tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
>>> def generate_answers(batch):
... inputs_dict = tokenizer(
... batch["article"], max_length=16384, padding="max_length", truncation=True, return_tensors="pt"
... )
... input_ids = inputs_dict.input_ids.to("cuda")
... attention_mask = inputs_dict.attention_mask.to("cuda")
... output_ids = model.generate(input_ids, attention_mask=attention_mask, max_length=512, num_beams=2)
... batch["predicted_abstract"] = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
... return batch
>>> result = dataset.map(generate_answer, batched=True, batch_size=2)
>>> rouge = evaluate.load("rouge")
>>> rouge.compute(predictions=result["predicted_abstract"], references=result["abstract"])
资源
- 翻译任务指南
- 摘要任务指南
LongT5Config
class transformers.LongT5Config
<来源>
代码语言:javascript复制( vocab_size = 32128 d_model = 512 d_kv = 64 d_ff = 2048 num_layers = 6 num_decoder_layers = None num_heads = 8 local_radius = 127 global_block_size = 16 relative_attention_num_buckets = 32 relative_attention_max_distance = 128 dropout_rate = 0.1 layer_norm_epsilon = 1e-06 initializer_factor = 1.0 feed_forward_proj = 'relu' is_encoder_decoder = True encoder_attention_type = 'local' use_cache = True pad_token_id = 0 eos_token_id = 1 **kwargs )
参数
-
vocab_size
(int
, optional, defaults to 32128) — LongT5 模型的词汇量。定义了在调用 LongT5Model 时可以表示的不同标记数量。 -
d_model
(int
, optional, defaults to 512) — 编码器层和池化层的大小。 -
d_kv
(int
, optional, defaults to 64) — 每个注意力头的键、查询、值投影的大小。d_kv
必须等于d_model // num_heads
。 -
d_ff
(int
, optional, defaults to 2048) — 每个LongT5Block
中间级前向层的大小。 -
num_layers
(int
, optional, defaults to 6) — Transformer 编码器中的隐藏层数量。 -
num_decoder_layers
(int
, optional) — Transformer 解码器中的隐藏层数量。如果未设置,将使用与num_layers
相同的值。 -
num_heads
(int
, optional, defaults to 8) — Transformer 编码器中每个注意力层的注意力头数。 -
local_radius
(int
, optional, defaults to 127) — 每个标记左/右的标记数,用于在本地注意机制中进行本地自我关注。 -
global_block_size
(int
, optional, defaults to 16) — 输入序列分成用于全局标记表示的块的长度。仅用于encoder_attention_type = "transient-global"
。 -
relative_attention_num_buckets
(int
, optional, defaults to 32) — 每个注意力层使用的桶数量。 -
relative_attention_max_distance
(int
, optional, defaults to 128) — 用于桶分离的更长序列的最大距离。 -
dropout_rate
(float
, optional, defaults to 0.1) — 所有 dropout 层的比率。 -
layer_norm_eps
(float
, optional, defaults to 1e-6) — 层归一化层使用的 epsilon。 -
initializer_factor
(float
, optional, defaults to 1) — 用于初始化所有权重矩阵的因子(应保持为 1,用于内部初始化测试)。 -
feed_forward_proj
(string
, optional, defaults to"relu"
) — 要使用的前向层类型。应该是"relu"
或"gated-gelu"
之一。LongT5v1.1 使用"gated-gelu"
前向投影。原始 LongT5 实现使用"gated-gelu"
。 -
encoder_attention_type
(string
, optional, defaults to"local"
) — 要使用的编码器注意类型。应该是 LongT5 实现支持的"local"
或"transient-global"
之一。 -
use_cache
(bool
, optional, defaults toTrue
) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。
这是配置类,用于存储 LongT5Model 或 FlaxLongT5Model 的配置。根据指定的参数实例化一个 LongT5 模型,定义模型架构。使用默认值实例化配置将产生类似于 LongT5 google/long-t5-local-base架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
PytorchHide Pytorch 内容
LongT5Model
class transformers.LongT5Model
<来源>
代码语言:javascript复制( config: LongT5Config )
参数
config
(LongT5Config)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
LONGT5 模型是一个裸的 transformer 模型,输出原始的隐藏状态,没有特定的头部。
LongT5 模型是由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在LongT5: Efficient Text-To-Text Transformer for Long Sequences中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器-解码器 transformer。LongT5 模型是 T5 模型的扩展,它可以使用两种不同的高效注意力机制之一 - (1) 本地注意力,或者(2) 瞬时-全局注意力。
这个模型继承自 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 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
)— 输入序列标记在词汇表中的索引。LongT5 是一个带有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 什么是输入 ID? 要了解有关如何为预训练准备input_ids
的更多信息,请查看长 T5 训练。 -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:- 对于
未屏蔽
的标记, - 对于
屏蔽
的标记为 0。
什么是注意力掩码?
- 对于
-
decoder_input_ids
(形状为(batch_size, target_sequence_length)
的torch.LongTensor
,可选)— 解码器输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? LONGT5 使用pad_token_id
作为decoder_input_ids
生成的起始标记。如果使用past_key_values
,则可以选择仅输入最后的decoder_input_ids
(参见past_key_values
)。 要了解有关如何为预训练准备decoder_input_ids
的更多信息,请查看 LONGT5 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 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
decoder_head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于在解码器中使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
cross_attn_head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.Tensor
,可选)- 用于在解码器中使交叉注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
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
(形状为(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可选)- 可选地,您可以选择直接传递嵌入表示而不是传递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 而不是一个普通元组。
返回
transformers.modeling_outputs.Seq2SeqModelOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.Seq2SeqModelOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含根据配置(LongT5Config)和输入的不同元素。
-
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
)— 模型解码器最后一层的隐藏状态序列输出。 如果仅使用past_key_values
,则输出形状为(batch_size, 1, hidden_size)
的序列的最后隐藏状态。 -
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)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 模型编码器最后一层的隐藏状态序列。 -
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 之后,用于计算自注意力头中的加权平均值。
LongT5Model 的前向方法覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在这个函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LongT5Model
>>> tokenizer = AutoTokenizer.from_pretrained("google/long-t5-local-base")
>>> model = LongT5Model.from_pretrained("google/long-t5-local-base")
>>> # Let's try a very long encoder input.
>>> input_ids = tokenizer(
... 100 * "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
>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
LongT5ForConditionalGeneration
class transformers.LongT5ForConditionalGeneration
<来源>
代码语言:javascript复制( config: LongT5Config )
参数
config
(LongT5Config)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
在顶部带有语言建模
头的 LONGT5 模型。
LongT5 模型是由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在LongT5: Efficient Text-To-Text Transformer for Long Sequences中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器-解码器 transformer。LongT5 模型是 T5 模型的扩展,它可以使用两种不同的高效注意力机制之一 - (1) 本地注意力,或者(2) 瞬时全局注意力。
这个模型继承自 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 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
)- 词汇表中输入序列标记的索引。LongT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? 要了解有关如何为预训练准备input_ids
的更多信息,请查看长 T5 训练。 -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:- 对于未被
masked
的标记为 1, - 对于被
masked
的标记为 0。
什么是注意力掩码?
- 对于未被
-
decoder_input_ids
(形状为(batch_size, target_sequence_length)
的torch.LongTensor
,可选)— 解码器输入序列标记在词汇表中的索引。 索引可以使用 AutoTokenizer 获得。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 解码器输入 ID 是什么? LONGT5 使用pad_token_id
作为decoder_input_ids
生成的起始标记。如果使用了past_key_values
,可以选择只输入最后一个decoder_input_ids
(参见past_key_values
)。 要了解有关如何为预训练准备decoder_input_ids
的更多信息,请查看 LONGT5 训练。 -
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))
,每个元组包含形状为(batch_size, num_heads, sequence_length - 1, embed_size_per_head)
的 4 个张量)— 包含注意力块的预计算键和值隐藏状态。可用于加速解码。 如果使用了past_key_values
,用户可以选择只输入最后一个形状为(batch_size, 1)
的decoder_input_ids
(那些没有将它们的过去键值状态提供给该模型的)而不是形状为(batch_size, sequence_length)
的所有decoder_input_ids
。 -
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,可以直接传递嵌入表示而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
decoder_inputs_embeds
(形状为(batch_size, target_sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,可以直接传递嵌入表示而不是传递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
(形状为(batch_size,)
的torch.LongTensor
,可选)— 用于计算序列分类/回归损失的标签。索引应在[-100, 0, ..., config.vocab_size - 1]
中。所有标签设置为-100
都将被忽略(掩码),损失仅计算在[0, ..., config.vocab_size]
中的标签。
返回
transformers.modeling_outputs.Seq2SeqLMOutput 或torch.FloatTensor
的元组
一个 transformers.modeling_outputs.Seq2SeqLMOutput 或一个torch.FloatTensor
的元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(LongT5Config)和输入的不同元素。
-
loss
(形状为(1,)
的torch.FloatTensor
,可选,当提供labels
时返回)— 语言建模损失。 -
logits
(形状为(batch_size, sequence_length, config.vocab_size)
的torch.FloatTensor
)— 语言建模头的预测分数(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)
,可选,当传递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 之后,用于计算自注意力头中的加权平均值。
LongT5ForConditionalGeneration 的前向方法重写了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
>>> model = LongT5ForConditionalGeneration.from_pretrained(
... "Stancld/longt5-tglobal-large-16384-pubmed-3k_steps"
... )
>>> # Let's try a very long input.
>>> inputs = tokenizer(100 * "studies have shown that owning a dog is good for you ", return_tensors="pt")
>>> input_ids = inputs.input_ids
>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
abstractthe aim of this article is to provide an overview of the literature on the role of dog
LongT5EncoderModel
class transformers.LongT5EncoderModel
<来源>
代码语言:javascript复制( config: LongT5Config )
参数
config
(LongT5Config) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
裸 LONGT5 模型 transformer 输出编码器的原始隐藏状态,没有特定的头部。
LongT5 模型是由 Mandy Guo、Joshua Ainslie、David Uthus、Santiago Ontanon、Jianmo Ni、Yun-Hsuan Sung 和 Yinfei Yang 在LongT5: Efficient Text-To-Text Transformer for Long Sequences中提出的。它是一个在文本到文本去噪生成设置中预训练的编码器-解码器 transformer。LongT5 模型是 T5 模型的扩展,它可以使用两种不同的高效注意机制之一 - (1) 本地注意力,或者(2) 瞬时-全局注意力。
此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言: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
,形状为(batch_size, sequence_length)
) — 输入序列标记在词汇表中的索引。LongT5 是一个带有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 要了解有关如何为预训练准备input_ids
的更多信息,请查看 LONGT5 Training。 -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选定在[0, 1]
:- 1 表示未被掩码的标记,
- 0 表示被掩码的标记。
什么是注意力掩码?
-
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中的选定头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部未被掩码,
- 0 表示头部被掩码。
-
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,可以直接传递嵌入表示而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,则这很有用,而不是使用模型的内部嵌入查找矩阵。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_outputs.BaseModelOutput 或 tuple(torch.FloatTensor)
一个 transformers.modeling_outputs.BaseModelOutput 或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或 config.return_dict=False
)包含各种元素,具体取决于配置(LongT5Config)和输入。
-
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
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。 模型在每一层输出的隐藏状态以及可选的初始嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。 在自注意力头中用于计算加权平均值的注意力 softmax 后的注意力权重。
LongT5EncoderModel 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google/long-t5-local-base")
>>> model = LongT5EncoderModel.from_pretrained("google/long-t5-local-base")
>>> input_ids = tokenizer(
... 100 * "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
JAXHide JAX content
FlaxLongT5Model
class transformers.FlaxLongT5Model
<来源>
代码语言:javascript复制( config: LongT5Config input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
__call__
<来源>
代码语言:javascript复制( input_ids: Array attention_mask: Optional = None decoder_input_ids: Array = None decoder_attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的jnp.ndarray
)- 词汇表中输入序列令牌的索引。LongT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧填充输入。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? 要了解有关如何为预训练准备input_ids
的更多信息,请查看长 T5 训练。 -
attention_mask
(形状为(batch_size, sequence_length)
的jnp.ndarray
,可选)- 用于避免在填充令牌索引上执行注意力的掩码。掩码值选在[0, 1]
之间:- 对于未被
masked
的令牌为 1。 - 对于被
masked
的令牌为 0。
什么是注意力掩码?
- 对于未被
-
decoder_input_ids
(形状为(batch_size, target_sequence_length)
的jnp.ndarray
,可选)- 词汇表中解码器输入序列令牌的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? LONGT5 使用pad_token_id
作为decoder_input_ids
生成的起始令牌。如果使用了past_key_values
,可以选择仅输入最后一个decoder_input_ids
(参见past_key_values
)。 要了解有关如何为预训练准备decoder_input_ids
的更多信息,请查看长 T5 训练。 -
decoder_attention_mask
(形状为(batch_size, target_sequence_length)
的jnp.ndarray
,可选)- 默认行为:生成一个张量,忽略decoder_input_ids
中的填充令牌。因果掩码也将默认使用。 -
encoder_outputs
(tuple(tuple(jnp.ndarray)
,可选)- 元组包含(last_hidden_state
,可选:hidden_states,可选:attentions)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。 -
past_key_values
(长度为config.n_layers
的tuple(tuple(jnp.ndarray))
,每个元组包含 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
。
返回
transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或tuple(torch.FloatTensor)
transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(LongT5Config)和输入的不同元素。
-
logits
(形状为(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
past_key_values
(tuple(tuple(jnp.ndarray))
,可选,当传递use_cache=True
或config.use_cache=True
时返回) — 长度为config.n_layers
的tuple(jnp.ndarray)
元组,每个元组有 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(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出,一个用于每一层的输出)。 解码器在每一层的隐藏状态加上初始嵌入输出。 -
decoder_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
,可选) — 模型编码器最后一层的隐藏状态序列。 -
encoder_hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出,一个用于每一层的输出)。 编码器在每一层的隐藏状态加上初始嵌入输出。 -
encoder_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
FlaxLongT5PreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
尽管前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxLongT5Model
>>> tokenizer = AutoTokenizer.from_pretrained("t5-base")
>>> model = FlaxLongT5Model.from_pretrained("google/long-t5-local-base")
>>> input_ids = tokenizer(
... "Studies have been shown that owning a dog is good for you", return_tensors="np"
... ).input_ids
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="np").input_ids
>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
encode
<来源>
代码语言:javascript复制( input_ids: Array attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(jnp.ndarray
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。LongT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 要了解如何为预训练准备input_ids
,请查看长 T5 训练。 -
attention_mask
(jnp.ndarray
,形状为(batch_size, sequence_length)
,可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 对于未被
masked
的标记为 1, - 对于被
masked
的标记为 0。
什么是注意力掩码?
- 对于未被
-
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请查看返回张量下的attentions
。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回张量下的hidden_states
。 -
return_dict
(bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutput 或tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
)包含根据配置(<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>
)和输入而异的各种元素。
-
last_hidden_state
(jnp.ndarray
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列输出。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入输出,一个用于每一层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")
>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
decode
<来源>
代码语言:javascript复制( decoder_input_ids encoder_outputs encoder_attention_mask: Optional = None decoder_attention_mask: Optional = None past_key_values: dict = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions or tuple(torch.FloatTensor)
参数
-
decoder_input_ids
(jnp.ndarray
,形状为(batch_size, target_sequence_length)
) — 词汇表中解码器输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? 在训练中,应提供decoder_input_ids
。 -
encoder_outputs
(tuple(tuple(jnp.ndarray)
) — 元组包括(last_hidden_state
,optional:hidden_states
,optional:attentions
)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,optional)是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。 -
encoder_attention_mask
(jnp.ndarray
,形状为(batch_size, sequence_length)
,optional) — 避免在填充标记索引上执行注意力的掩码。选择的掩码值为[0, 1]
:- 对于未被掩码的标记,为 1,
- 对于被掩码的标记为 0。
什么是注意力掩码?
-
decoder_attention_mask
(jnp.ndarray
,形状为(batch_size, target_sequence_length)
,optional) — 默认行为:生成一个忽略decoder_input_ids
中填充标记的张量。默认情况下还将使用因果掩码。 如果要更改填充行为,应根据需要进行修改。有关默认策略的更多信息,请参见论文中的图表 1。 -
past_key_values
(Dict[str, np.ndarray]
,optional,由init_cache
返回或传递先前的past_key_values
时返回) — 预先计算的隐藏状态字典(注意力块中的键和值),可用于快速自回归解码。预先计算的键和值隐藏状态的形状为*[batch_size, max_length]*。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxBaseModelOutputWithPastAndCrossAttentions 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>
)和输入的不同元素。
-
last_hidden_state
(jnp.ndarray
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 如果仅使用past_key_values
,则输出形状为(batch_size, 1, hidden_size)
的序列的最后隐藏状态。 -
past_key_values
(tuple(tuple(jnp.ndarray))
, optional, 当传递use_cache=True
或config.use_cache=True
时返回 — 长度为config.n_layers
的元组,每个元组有 2 个形状为(batch_size, num_heads, sequence_length, embed_size_per_head)
的张量,如果config.is_encoder_decoder=True
,还有 2 个形状为(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)
的张量。 包含预先计算的隐藏状态(自注意力块中的键和值,以及在交叉注意力块中,如果config.is_encoder_decoder=True
,可以使用(查看past_key_values
输入)来加速顺序解码。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或传递config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出,一个用于每个层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或传递config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
和config.add_cross_attention=True
或传递config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration
>>> import jax.numpy as jnp
>>> tokenizer = AutoTokenizer.from_pretrained("t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")
>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id
>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits
FlaxLongT5ForConditionalGeneration
class transformers.FlaxLongT5ForConditionalGeneration
< source >
代码语言:javascript复制( config: LongT5Config input_shape: Tuple = (1, 1) seed: int = 0 dtype: dtype = <class 'jax.numpy.float32'> _do_init: bool = True **kwargs )
__call__
< source >
代码语言:javascript复制( input_ids: Array attention_mask: Optional = None decoder_input_ids: Array = None decoder_attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的jnp.ndarray
)- 词汇表中输入序列标记的索引。LongT5 是一个具有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? 了解如何为预训练准备input_ids
,请查看 LONGT5 Training。 -
attention_mask
(形状为(batch_size, sequence_length)
的jnp.ndarray
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:- 对于未被
masked
的标记,值为 1。 - 对于被
masked
的标记,值为 0。
什么是注意力掩码?
- 对于未被
-
decoder_input_ids
(形状为(batch_size, target_sequence_length)
的jnp.ndarray
,可选)- 词汇表中解码器输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。详细信息请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? LONGT5 使用pad_token_id
作为decoder_input_ids
生成的起始标记。如果使用了past_key_values
,可选择只需输入最后的decoder_input_ids
(查看past_key_values
)。 了解如何为预训练准备decoder_input_ids
,请查看 LONGT5 Training。 -
decoder_attention_mask
(形状为(batch_size, target_sequence_length)
的jnp.ndarray
,可选)- 默认行为:生成一个忽略decoder_input_ids
中填充标记的张量。因果膜也将默认使用。 -
encoder_outputs
(tuple(tuple(jnp.ndarray)
,可选)- 元组包括(last_hidden_state
,可选:hidden_states,可选:attentions)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。 -
past_key_values
(长度为config.n_layers
的tuple(tuple(jnp.ndarray))
,每个元组有 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
。
返回
transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或tuple(torch.FloatTensor)
transformers.modeling_flax_outputs.FlaxSeq2SeqLMOutput 或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包括根据配置(LongT5Config)和输入的不同元素。
-
logits
(形状为(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
)- 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
past_key_values
(tuple(tuple(jnp.ndarray))
,可选,当传递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(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 元组包括(嵌入输出的输出 每层输出的输出)的jnp.ndarray
(每层一个)的形状为(batch_size, sequence_length, hidden_size)
。 解码器在每一层输出的隐藏状态以及初始嵌入输出。 -
decoder_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。 -
cross_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。 -
encoder_last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
,可选)- 模型编码器最后一层的隐藏状态序列。 -
encoder_hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或者当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入输出,一个用于每一层的输出)。 编码器在每一层输出的隐藏状态加上初始嵌入输出。 -
encoder_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或者当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
FlaxLongT5PreTrainedModel
的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")
>>> ARTICLE_TO_SUMMARIZE = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer([ARTICLE_TO_SUMMARIZE], return_tensors="np")
>>> # Generate Summary
>>> summary_ids = model.generate(inputs["input_ids"]).sequences
>>> print(tokenizer.decode(summary_ids[0], skip_special_tokens=True, clean_up_tokenization_spaces=False))
encode
< source >
代码语言:javascript复制( input_ids: Array attention_mask: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxBaseModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的jnp.ndarray
) — 词汇表中输入序列标记的索引。LongT5 是一个带有相对位置嵌入的模型,因此您应该能够在右侧和左侧都填充输入。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 要了解有关如何为预训练准备input_ids
的更多信息,请查看长 T5 训练。 -
attention_mask
(形状为(batch_size, sequence_length)
的jnp.ndarray
,可选) — 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
范围内:- 对于
未被掩码
的标记为 1, - 对于
被掩码
的标记为 0。
什么是注意力掩码?
- 对于
-
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请查看返回张量下的attentions
。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回张量下的hidden_states
。 -
return_dict
(bool
,可选) — 是否返回一个 ModelOutput 而不是一个普通元组。
返回
transformers.modeling_flax_outputs.FlaxBaseModelOutput 或者tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxBaseModelOutput 或者一个torch.FloatTensor
元组(如果传递了return_dict=False
或者当config.return_dict=False
时)包括各种元素,取决于配置(<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>
)和输入。
-
last_hidden_state
(形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
) — 模型最后一层的隐藏状态序列。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或者当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入输出,一个用于每一层的输出)。 模型每一层的隐藏状态加上初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
, optional, 当传递output_attentions=True
或者config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")
>>> text = "My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
decode
< source >
代码语言:javascript复制( decoder_input_ids encoder_outputs encoder_attention_mask: Optional = None decoder_attention_mask: Optional = None past_key_values: dict = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None train: bool = False params: dict = None dropout_rng: PRNGKey = None ) → export const metadata = 'undefined';transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions or tuple(torch.FloatTensor)
参数
-
decoder_input_ids
(jnp.ndarray
形状为(batch_size, target_sequence_length)
) — 词汇表中解码器输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是解码器输入 ID? 对于训练,应提供decoder_input_ids
。 -
encoder_outputs
(tuple(tuple(jnp.ndarray)
) — 元组包括 (last_hidden_state
, optional:hidden_states
, optional:attentions
)last_hidden_state
的形状为(batch_size, sequence_length, hidden_size)
,optional) 是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。 -
encoder_attention_mask
(jnp.ndarray
形状为(batch_size, sequence_length)
,optional) — 避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
:- 1 代表
未被掩码
的标记, - 0 代表
被掩码
的标记。
什么是注意力掩码?
- 1 代表
-
decoder_attention_mask
(jnp.ndarray
形状为(batch_size, target_sequence_length)
,optional) — 默认行为:生成一个忽略decoder_input_ids
中填充标记的张量。因果掩码也将默认使用。 如果要更改填充行为,应根据需要进行修改。有关默认策略的更多信息,请参见 论文 中的图表 1。 -
past_key_values
(Dict[str, np.ndarray]
, optional, 由init_cache
返回或传递先前的past_key_values
时返回) — 预先计算的隐藏状态字典(注意力块中的键和值),可用于快速自回归解码。预先计算的键和值隐藏状态的形状为 [batch_size, max_length]。 -
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量中的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量中的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或 tuple(torch.FloatTensor)
一个 transformers.modeling_flax_outputs.FlaxCausalLMOutputWithCrossAttentions 或一个 torch.FloatTensor
元组(如果传递 return_dict=False
或者 config.return_dict=False
)包含根据配置 (<class 'transformers.models.longt5.configuration_longt5.LongT5Config'>
) 和输入的各种元素。
-
logits
(形状为(batch_size, sequence_length, config.vocab_size)
的jnp.ndarray
)- 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
hidden_states
(tuple(jnp.ndarray)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)- 形状为(batch_size, sequence_length, hidden_size)
的jnp.ndarray
元组(一个用于嵌入的输出,一个用于每个层的输出)。 模型在每一层输出的隐藏状态以及初始嵌入输出。 -
attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 在自注意力头中用于计算加权平均的注意力权重 softmax 后的值。 -
cross_attentions
(tuple(jnp.ndarray)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)
的jnp.ndarray
元组(每层一个)。 在交叉注意力头中用于计算加权平均的注意力权重 softmax 后的值。 -
past_key_values
(tuple(tuple(jnp.ndarray))
,可选,当传递use_cache=True
或config.use_cache=True
时返回)- 长度为config.n_layers
的jnp.ndarray
元组的元组,每个元组包含自注意力和交叉注意力层的缓存键、值状态,如果模型在编码器-解码器设置中使用,则相关。仅在config.is_decoder = True
时相关。 包含预先计算的隐藏状态(注意力块中的键和值),可用于加速顺序解码。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, FlaxLongT5ForConditionalGeneration
>>> import jax.numpy as jnp
>>> tokenizer = AutoTokenizer.from_pretrained("t5-base")
>>> model = FlaxLongT5ForConditionalGeneration.from_pretrained("google/long-t5-local-base")
>>> text = "summarize: My friends are cool but they eat too many carbs."
>>> inputs = tokenizer(text, return_tensors="np")
>>> encoder_outputs = model.encode(**inputs)
>>> decoder_start_token_id = model.config.decoder_start_token_id
>>> decoder_input_ids = jnp.ones((inputs.input_ids.shape[0], 1), dtype="i4") * decoder_start_token_id
>>> outputs = model.decode(decoder_input_ids, encoder_outputs)
>>> logits = outputs.logits
卢克
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/luke
概述
LUKE 模型是由 Ikuya Yamada、Akari Asai、Hiroyuki Shindo、Hideaki Takeda 和 Yuji Matsumoto 在LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention中提出的。它基于 RoBERTa,并添加了实体嵌入以及实体感知自注意机制,有助于提高在涉及推理实体的各种下游任务上的性能,如命名实体识别、提取式和填空式问答、实体类型划分和关系分类。
以下是论文摘要:
*实体表示在涉及实体的自然语言任务中非常有用。在本文中,我们提出了基于双向变换器的新的预训练上下文化单词和实体表示。所提出的模型将给定文本中的单词和实体视为独立标记,并输出它们的上下文化表示。我们的模型使用基于 BERT 的遮蔽语言模型的新预训练任务进行训练。该任务涉及在从维基百科检索的大型实体注释语料库中预测随机屏蔽的单词和实体。我们还提出了一种实体感知自注意机制,它是变换器自注意机制的扩展,并在计算注意力分数时考虑标记类型(单词或实体)。所提出的模型在广泛的与实体相关任务上取得了令人印象深刻的实证性表现。特别是,在五个知名数据集上取得了最新成果:Open Entity(实体类型划分)、TACRED(关系分类)、CoNLL-2003(命名实体识别)、ReCoRD(填空式问答)和 SQuAD 1.1(提取式问答)。
此模型由ikuyamada和nielsr贡献。原始代码可在此处找到。
使用提示
- 此实现与 RobertaModel 相同,只是添加了实体嵌入以及实体感知自注意机制,从而提高了在涉及推理实体的任务中的性能。
- LUKE 将实体视为输入标记;因此,它接受
entity_ids
、entity_attention_mask
、entity_token_type_ids
和entity_position_ids
作为额外输入。您可以使用 LukeTokenizer 来获取这些信息。 - LukeTokenizer 接受
entities
和entity_spans
(实体在输入文本中基于字符的起始和结束位置)作为额外输入。entities
通常包括[MASK]实体或维基百科实体。输入这些实体时的简要描述如下:- 输入[MASK]实体以计算实体表示:[MASK]实体用于在预训练期间屏蔽待预测的实体。当 LUKE 接收到[MASK]实体时,它会尝试通过从输入文本中收集有关实体的信息来预测原始实体。因此,[MASK]实体可用于处理需要文本中实体信息的下游任务,如实体类型划分、关系分类和命名实体识别。
- 输入维基百科实体以计算知识增强的令牌表示:LUKE 在预训练期间学习关于维基百科实体的丰富信息(或知识),并将信息存储在其实体嵌入中。通过使用维基百科实体作为输入令牌,LUKE 输出由这些实体嵌入中存储的信息丰富的令牌表示。这对于需要现实世界知识的任务(如问答)特别有效。
- 前一用例有三个头模型:
- 用于实体分类的 LukeForEntityClassification,用于对输入文本中的单个实体进行分类,例如实体类型标注,例如Open Entity 数据集。该模型在输出实体表示上放置了一个线性头。
- 用于实体对分类的 LukeForEntityPairClassification,用于对两个实体之间的关系进行分类,例如关系分类,例如TACRED 数据集。该模型在给定实体对的连接输出表示上放置了一个线性头。
- 用于实体跨度分类的 LukeForEntitySpanClassification,用于对实体跨度序列进行分类,例如命名实体识别(NER)。该模型在输出实体表示上放置了一个线性头。您可以通过将文本中的所有可能实体跨度输入到模型中来使用此模型来处理 NER。
LukeTokenizer 有一个
task
参数,通过指定task="entity_classification"
、task="entity_pair_classification"
或task="entity_span_classification"
,可以轻松地创建这些头模型的输入。请参考每个头模型的示例代码。
用法示例:
代码语言:javascript复制>>> from transformers import LukeTokenizer, LukeModel, LukeForEntityPairClassification
>>> model = LukeModel.from_pretrained("studio-ousia/luke-base")
>>> tokenizer = LukeTokenizer.from_pretrained("studio-ousia/luke-base")
# Example 1: Computing the contextualized entity representation corresponding to the entity mention "Beyoncé"
>>> text = "Beyoncé lives in Los Angeles."
>>> entity_spans = [(0, 7)] # character-based entity span corresponding to "Beyoncé"
>>> inputs = tokenizer(text, entity_spans=entity_spans, add_prefix_space=True, return_tensors="pt")
>>> outputs = model(**inputs)
>>> word_last_hidden_state = outputs.last_hidden_state
>>> entity_last_hidden_state = outputs.entity_last_hidden_state
# Example 2: Inputting Wikipedia entities to obtain enriched contextualized representations
>>> entities = [
... "Beyoncé",
... "Los Angeles",
... ] # Wikipedia entity titles corresponding to the entity mentions "Beyoncé" and "Los Angeles"
>>> entity_spans = [(0, 7), (17, 28)] # character-based entity spans corresponding to "Beyoncé" and "Los Angeles"
>>> inputs = tokenizer(text, entities=entities, entity_spans=entity_spans, add_prefix_space=True, return_tensors="pt")
>>> outputs = model(**inputs)
>>> word_last_hidden_state = outputs.last_hidden_state
>>> entity_last_hidden_state = outputs.entity_last_hidden_state
# Example 3: Classifying the relationship between two entities using LukeForEntityPairClassification head model
>>> model = LukeForEntityPairClassification.from_pretrained("studio-ousia/luke-large-finetuned-tacred")
>>> tokenizer = LukeTokenizer.from_pretrained("studio-ousia/luke-large-finetuned-tacred")
>>> entity_spans = [(0, 7), (17, 28)] # character-based entity spans corresponding to "Beyoncé" and "Los Angeles"
>>> inputs = tokenizer(text, entity_spans=entity_spans, return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> predicted_class_idx = int(logits[0].argmax())
>>> print("Predicted class:", model.config.id2label[predicted_class_idx])
资源
- 关于如何微调LukeForEntityPairClassification 用于关系分类的演示笔记本
- 展示如何使用 HuggingFace LUKE 实现重现论文中结果的笔记本
- 文本分类任务指南
- 令牌分类任务指南
- 问答任务指南
- 掩码语言建模任务指南
- 多项选择任务指南
LukeConfig
class transformers.LukeConfig
<来源>
代码语言:javascript复制( vocab_size = 50267 entity_vocab_size = 500000 hidden_size = 768 entity_emb_size = 256 num_hidden_layers = 12 num_attention_heads = 12 intermediate_size = 3072 hidden_act = 'gelu' hidden_dropout_prob = 0.1 attention_probs_dropout_prob = 0.1 max_position_embeddings = 512 type_vocab_size = 2 initializer_range = 0.02 layer_norm_eps = 1e-12 use_entity_aware_attention = True classifier_dropout = None pad_token_id = 1 bos_token_id = 0 eos_token_id = 2 **kwargs )
参数
-
vocab_size
(int
, 可选, 默认为 50267) — LUKE 模型的词汇表大小。定义了在调用 LukeModel 时可以表示的不同令牌数量。 -
entity_vocab_size
(int
, 可选, 默认为 500000) — LUKE 模型的实体词汇表大小。定义了在调用 LukeModel 时可以表示的不同实体数量。 -
hidden_size
(int
, 可选, 默认为 768) — 编码器层和池化层的维度。 -
entity_emb_size
(int
, 可选, 默认为 256) — 实体嵌入的维度数。 -
num_hidden_layers
(int
, 可选, 默认为 12) — Transformer 编码器中的隐藏层数量。 -
num_attention_heads
(int
, optional, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。 -
intermediate_size
(int
, optional, 默认为 3072) — Transformer 编码器中“中间”(通常称为前馈)层的维度。 -
hidden_act
(str
或Callable
, optional, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu"
、"relu"
、"silu"
和"gelu_new"
。 -
hidden_dropout_prob
(float
, optional, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 -
attention_probs_dropout_prob
(float
, optional, 默认为 0.1) — 注意力概率的 dropout 比率。 -
max_position_embeddings
(int
, optional, 默认为 512) — 该模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如,512、1024 或 2048)。 -
type_vocab_size
(int
, optional, 默认为 2) — 在调用 LukeModel 时传递的token_type_ids
的词汇大小。 -
initializer_range
(float
, optional, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。 -
layer_norm_eps
(float
, optional, 默认为 1e-12) — 层归一化层使用的 epsilon。 -
use_entity_aware_attention
(bool
, optional, 默认为True
) — 模型是否应该使用LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention (Yamada et al.)中提出的实体感知自注意机制。 -
classifier_dropout
(float
, optional) — 分类头的 dropout 比率。 -
pad_token_id
(int
, optional, 默认为 1) — 填充标记 id。 -
bos_token_id
(int
, optional, 默认为 0) — 流的起始标记 id。 -
eos_token_id
(int
, optional, 默认为 2) — 流的结束标记 id。
这是用于存储 LukeModel 配置的配置类。根据指定的参数实例化 LUKE 模型,定义模型架构。使用默认值实例化配置将产生类似于 LUKE studio-ousia/luke-base架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
代码语言:javascript复制>>> from transformers import LukeConfig, LukeModel
>>> # Initializing a LUKE configuration
>>> configuration = LukeConfig()
>>> # Initializing a model from the configuration
>>> model = LukeModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
LukeTokenizer
class transformers.LukeTokenizer
<来源>
代码语言:javascript复制( vocab_file merges_file entity_vocab_file task = None max_entity_length = 32 max_mention_length = 30 entity_token_1 = '<ent>' entity_token_2 = '<ent2>' entity_unk_token = '[UNK]' entity_pad_token = '[PAD]' entity_mask_token = '[MASK]' entity_mask2_token = '[MASK2]' 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 **kwargs )
参数
-
vocab_file
(str
) — 词汇文件的路径。 -
merges_file
(str
) — 合并文件的路径。 -
entity_vocab_file
(str
) — 实体词汇文件的路径。 -
task
(str
, optional) — 您想要准备序列的任务。其中之一是"entity_classification"
、"entity_pair_classification"
或"entity_span_classification"
。如果指定此参数,实体序列将根据给定的实体跨度自动创建。 -
max_entity_length
(int
, optional, 默认为 32) —entity_ids
的最大长度。 -
max_mention_length
(int
, optional, 默认为 30) — 实体跨度内的最大标记数。 -
entity_token_1
(str
, optional, 默认为<ent>
) — 用于表示单词标记序列中实体跨度的特殊标记。仅当task
设置为"entity_classification"
或"entity_pair_classification"
时才使用此标记。 -
entity_token_2
(str
,可选,默认为<ent2>
)— 用于表示单词标记序列中实体跨度的特殊标记。仅当task
设置为"entity_pair_classification"
时才使用此标记。 -
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
)— 是否在输入前添加一个初始空格。这允许将前导单词视为任何其他单词。(LUKE 分词器通过前面的空格检测单词的开头)。
构建一个 LUKE 分词器,从 GPT-2 分词器派生,使用字节级字节对编码。
这个分词器已经训练成将空格视为标记的一部分(有点像 sentencepiece),因此一个单词将
在句子开头(无空格)或不是时,将以不同方式编码:
代码语言:javascript复制>>> from transformers import LukeTokenizer
>>> tokenizer = LukeTokenizer.from_pretrained("studio-ousia/luke-base")
>>> tokenizer("Hello world")["input_ids"]
[0, 31414, 232, 2]
>>> tokenizer(" Hello world")["input_ids"]
[0, 20920, 232, 2]
您可以通过在实例化此分词器时或在对某些文本调用它时传递add_prefix_space=True
来避免这种行为,但由于该模型不是以这种方式进行预训练的,因此可能会导致性能下降。
当与is_split_into_words=True
一起使用时,此分词器将在每个单词之前添加一个空格(即使是第一个单词)。
这个分词器继承自 PreTrainedTokenizer,其中包含大多数主要方法。用户应参考这个超类以获取有关这些方法的更多信息。它还创建实体序列,即entity_ids
、entity_attention_mask
、entity_token_type_ids
和entity_position_ids
,供 LUKE 模型使用。
__call__
<来源>
代码语言:javascript复制( text: Union text_pair: Union = None entity_spans: Union = None entity_spans_pair: Union = None entities: Union = None entities_pair: Union = None add_special_tokens: bool = True padding: Union = False truncation: Union = None max_length: Optional = None max_entity_length: Optional = None stride: int = 0 is_split_into_words: Optional = False 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 ) → export const metadata = 'undefined';BatchEncoding
参数
-
text
(str
,List[str]
,List[List[str]]
)— 要编码的序列或序列批次。每个序列必须是一个字符串。请注意,此分词器不支持基于预分词字符串的分词。 -
text_pair
(str
,List[str]
,List[List[str]]
)— 要编码的序列或批次。每个序列必须是一个字符串。请注意,此分词器不支持基于预分词字符串的分词。 -
entity_spans
(List[Tuple[int, int]]
,List[List[Tuple[int, int]]]
,可选)— 要编码的实体跨度序列或批次。每个序列由元组组成,每个元组包含两个整数,表示实体的基于字符的起始和结束位置。如果在构造函数中将task
参数指定为"entity_classification"
或"entity_pair_classification"
,则每个序列的长度必须分别为 1 或 2。如果指定了entities
,则每个序列的长度必须等于entities
的每个序列的长度。 -
entity_spans_pair
(List[Tuple[int, int]]
,List[List[Tuple[int, int]]]
,可选)— 要编码的实体跨度序列或批次。每个序列由元组组成,每个元组包含两个整数,表示实体的基于字符的起始和结束位置。如果在构造函数中指定了task
参数,则将忽略此参数。如果指定了entities_pair
,则每个序列的长度必须等于entities_pair
的每个序列的长度。 -
entities
(List[str]
,List[List[str]]
,可选)— 要编码的实体序列或批次。每个序列由表示实体的字符串组成,即特殊实体(例如 [MASK])或维基百科的实体标题(例如洛杉矶)。如果在构造函数中指定了task
参数,则将忽略此参数。每个序列的长度必须等于entity_spans
的每个序列的长度。如果指定了entity_spans
而没有指定此参数,则实体序列或实体序列批次将通过填充 [MASK] 实体来自动构建。 -
entities_pair
(List[str]
,List[List[str]]
,可选)— 要编码的实体序列或批次。每个序列由表示实体的字符串组成,即特殊实体(例如 [MASK])或维基百科的实体标题(例如洛杉矶)。如果在构造函数中指定了task
参数,则将忽略此参数。每个序列的长度必须等于entity_spans_pair
的每个序列的长度。如果指定了entity_spans_pair
而没有指定此参数,则实体序列或实体序列批次将通过填充 [MASK] 实体来自动构建。 -
max_entity_length
(int
,可选)—entity_ids
的最大长度。 -
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
,分词器会假定输入已经分成单词(例如,通过空格分割),然后进行分词。这对于命名实体识别或标记分类很有用。 -
pad_to_multiple_of
(int
, 可选) — 如果设置,将序列填充到提供的值的倍数。需要激活padding
。这对于在具有计算能力>= 7.5
(Volta)的 NVIDIA 硬件上启用 Tensor Cores 特别有用。 -
return_tensors
(str
或 TensorType, 可选) — 如果设置,将返回张量而不是 Python 整数列表。可接受的值为:-
'tf'
: 返回 TensorFlowtf.constant
对象。 -
'pt'
: 返回 PyTorchtorch.Tensor
对象。 -
'np'
: 返回 Numpynp.ndarray
对象。
-
-
return_token_type_ids
(bool
, 可选) — 是否返回 token 类型 ID。如果保持默认设置,将根据特定分词器的默认设置返回 token 类型 ID,由return_outputs
属性定义。 什么是 token 类型 ID? -
return_attention_mask
(bool
, 可选) — 是否返回注意力掩码。如果保持默认设置,将根据特定分词器的默认设置返回注意力掩码,由return_outputs
属性定义。 什么是注意力掩码? -
return_overflowing_tokens
(bool
, 可选, 默认为False
) — 是否返回溢出的标记序列。如果提供一对输入 ID 序列(或一批序列),并且truncation_strategy = longest_first
或True
,则会引发错误,而不是返回溢出的标记。 -
return_special_tokens_mask
(bool
, 可选, 默认为False
) — 是否返回特殊标记掩码信息。 -
return_offsets_mapping
(bool
, 可选, 默认为False
) — 是否返回每个标记的(char_start, char_end)
。 这仅适用于继承自 PreTrainedTokenizerFast 的快速分词器,如果使用 Python 的分词器,此方法将引发NotImplementedError
。 -
return_length
(bool
,可选,默认为False
) — 是否返回编码输入的长度。 -
verbose
(bool
,可选,默认为True
) — 是否打印更多信息和警告。**kwargs — 传递给self.tokenize()
方法
返回
BatchEncoding
具有以下字段的 BatchEncoding:
-
input_ids
— 要馈送到模型的标记 ID 列表。 什么是输入 ID? -
token_type_ids
— 要馈送到模型的标记类型 ID 列表(当return_token_type_ids=True
或者*token_type_ids
*在self.model_input_names
中时)。 什么是标记类型 ID? -
attention_mask
— 指定模型应该关注哪些标记的索引列表(当return_attention_mask=True
或者*attention_mask
*在self.model_input_names
中时)。 什么是注意力掩码? -
entity_ids
— 要馈送到模型的实体 ID 列表。 什么是输入 ID? -
entity_position_ids
— 输入序列中实体位置的列表,将被馈送到模型中。 -
entity_token_type_ids
— 要馈送到模型的实体标记类型 ID 列表(当return_token_type_ids=True
或者*entity_token_type_ids
*在self.model_input_names
中时)。 什么是标记类型 ID? -
entity_attention_mask
— 指定模型应该关注哪些实体的索引列表(当return_attention_mask=True
或者*entity_attention_mask
*在self.model_input_names
中时)。 什么是注意力掩码? -
entity_start_positions
— 单词标记序列中实体的开始位置列表(当task="entity_span_classification"
时)。 -
entity_end_positions
— 单词标记序列中实体的结束位置列表(当task="entity_span_classification"
时)。 -
overflowing_tokens
— 溢出标记序列的列表(当指定max_length
并且return_overflowing_tokens=True
时)。 -
num_truncated_tokens
— 被截断的标记数量(当指定max_length
并且return_overflowing_tokens=True
时)。 -
special_tokens_mask
— 由 0 和 1 组成的列表,其中 1 指定添加的特殊标记,0 指定常规序列标记(当add_special_tokens=True
和return_special_tokens_mask=True
时)。 -
length
— 输入的长度(当return_length=True
时)
为模型准备一个或多个序列或一个或多个序列对的主要方法,具体取决于您要为其准备的任务。
save_vocabulary
< source >
代码语言:javascript复制( save_directory: str filename_prefix: Optional = None )
LukeModel
class transformers.LukeModel
< source >
代码语言:javascript复制( config: LukeConfig add_pooling_layer: bool = True )
参数
config
(LukeConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
裸 LUKE 模型变压器输出原始隐藏状态,既适用于单词标记,也适用于实体,没有特定的头部。
该模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
该模型也是 PyTorch torch.nn.Module 的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: 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.luke.modeling_luke.BaseLukeModelOutputWithPooling or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
) — 序列输入标记在词汇表中的索引。 索引可以使用 AutoTokenizer 获得。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 表示
未被掩码
的标记, - 0 表示
被掩码
的标记。
什么是注意力掩码?
- 1 表示
-
token_type_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 段标记索引,用于指示输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
什么是标记类型 ID?
-
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
entity_ids
(torch.LongTensor
of shape(batch_size, entity_length)
) — 实体词汇中实体标记的索引。 索引可以使用 AutoTokenizer 获得。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 -
entity_attention_mask
(torch.FloatTensor
of shape(batch_size, entity_length)
, optional) — 用于避免在填充实体标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 表示
未被掩码
的实体标记, - 0 表示
被掩码
的实体标记。
- 1 表示
-
entity_token_type_ids
(torch.LongTensor
of shape(batch_size, entity_length)
, optional) — 段标记索引,用于指示实体标记输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于 部分 A 实体标记,
- 1 对应于 部分 B 实体标记。
-
entity_position_ids
(torch.LongTensor
of shape(batch_size, entity_length, max_mention_length)
, optional) — 每个输入实体在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 -
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。 -
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块中选择的头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。更多细节请参见返回张量中的attentions
。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。更多细节请参见返回张量中的hidden_states
。 -
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。
返回
transformers.models.luke.modeling_luke.BaseLukeModelOutputWithPooling
或tuple(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.BaseLukeModelOutputWithPooling
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(LukeConfig)和输入而异的各种元素。
-
last_hidden_state
(torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。 -
entity_last_hidden_state
(torch.FloatTensor
,形状为(batch_size, entity_length, hidden_size)
) — 模型最后一层的实体隐藏状态序列。 -
pooler_output
(torch.FloatTensor
,形状为(batch_size, hidden_size)
) — 序列第一个标记(分类标记)的最后一层隐藏状态,经过线性层和 Tanh 激活函数进一步处理。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(嵌入输出的一个 每层输出的一个)。模型在每一层的隐藏状态加上初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, entity_length, hidden_size)
的torch.FloatTensor
元组(嵌入输出的一个 每层输出的一个)。模型在每一层的实体隐藏状态加上初始实体嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length entity_length, sequence_length entity_length)
的torch.FloatTensor
元组(每层一个)。自注意力头部中的注意力权重 softmax 后的值,用于计算自注意力头部中的加权平均值。
LukeyModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在之后调用Module
实例而不是这个,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LukeModel
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-base")
>>> model = LukeModel.from_pretrained("studio-ousia/luke-base")
# Compute the contextualized entity representation corresponding to the entity mention "Beyoncé"
>>> text = "Beyoncé lives in Los Angeles."
>>> entity_spans = [(0, 7)] # character-based entity span corresponding to "Beyoncé"
>>> encoding = tokenizer(text, entity_spans=entity_spans, add_prefix_space=True, return_tensors="pt")
>>> outputs = model(**encoding)
>>> word_last_hidden_state = outputs.last_hidden_state
>>> entity_last_hidden_state = outputs.entity_last_hidden_state
# Input Wikipedia entities to obtain enriched contextualized representations of word tokens
>>> text = "Beyoncé lives in Los Angeles."
>>> entities = [
... "Beyoncé",
... "Los Angeles",
... ] # Wikipedia entity titles corresponding to the entity mentions "Beyoncé" and "Los Angeles"
>>> entity_spans = [
... (0, 7),
... (17, 28),
... ] # character-based entity spans corresponding to "Beyoncé" and "Los Angeles"
>>> encoding = tokenizer(
... text, entities=entities, entity_spans=entity_spans, add_prefix_space=True, return_tensors="pt"
... )
>>> outputs = model(**encoding)
>>> word_last_hidden_state = outputs.last_hidden_state
>>> entity_last_hidden_state = outputs.entity_last_hidden_state
LukeForMaskedLM
class transformers.LukeForMaskedLM
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig)— 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
LUKE 模型具有语言建模头和顶部的实体预测头,用于掩码语言建模和掩码实体预测。
这个模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: Optional = None labels: Optional = None entity_labels: 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.luke.modeling_luke.LukeMaskedLMOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 代表
未被掩码
的标记, - 0 代表
被掩码
的标记。
什么是注意力掩码?
- 1 代表
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于一个句子 A标记,
- 1 对应于一个句子 B标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
entity_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
)— 实体词汇表中实体标记的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 -
entity_attention_mask
(形状为(batch_size, entity_length)
的torch.FloatTensor
,可选)— 避免在填充实体标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 代表
未被掩码
的实体标记, - 0 代表
被掩码
的实体标记。
- 1 代表
-
entity_token_type_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
,可选)— 段标记索引,指示实体标记输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于一个部分 A实体标记,
- 1 对应于一个部分 B实体标记。
-
entity_position_ids
(torch.LongTensor
of shape(batch_size, entity_length, max_mention_length)
, optional) — 每个输入实体在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。 -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中选择的头部失效的掩码。选择的掩码值在[0, 1]
中。- 1 表示头部是
not masked
, - 0 表示头部是
masked
。
- 1 表示头部是
-
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。 -
labels
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(请参阅input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩码),损失仅计算具有标签在[0, ..., config.vocab_size]
中的标记。 -
entity_labels
(torch.LongTensor
of shape(batch_size, entity_length)
, optional) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
范围内(请参阅input_ids
文档字符串)。索引设置为-100
的标记将被忽略(掩码),损失仅计算具有标签在[0, ..., config.vocab_size]
中的标记。
返回
transformers.models.luke.modeling_luke.LukeMaskedLMOutput
或tuple(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.LukeMaskedLMOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时),包含根据配置(LukeConfig)和输入的各种元素。
-
loss
(torch.FloatTensor
of shape(1,)
, optional, returned whenlabels
is provided) — 掩码语言建模(MLM)损失和实体预测损失的总和。 -
mlm_loss
(torch.FloatTensor
of shape(1,)
, optional, returned whenlabels
is provided) — 掩码语言建模(MLM)损失。 -
mep_loss
(torch.FloatTensor
of shape(1,)
, optional, returned whenlabels
is provided) — 掩码实体预测(MEP)损失。 -
logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇标记的分数)。 -
entity_logits
(torch.FloatTensor
of shape(batch_size, sequence_length, config.vocab_size)
) — 实体预测头的预测分数(SoftMax 之前每个实体词汇标记的分数)。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) —torch.FloatTensor
元组(一个用于嵌入输出,一个用于每个层的输出)的形状为(batch_size, sequence_length, hidden_size)
。 每层模型输出的隐藏状态加上初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回)— 形状为(batch_size, entity_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 后的注意力权重,用于计算自注意力头中的加权平均值。
LuKeForMaskedLM 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
LukeForEntityClassification
class transformers.LukeForEntityClassification
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
LUKE 模型在顶部有一个分类头(在第一个实体标记的隐藏状态上有一个线性层)用于实体分类任务,如 Open Entity。
该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型也是 PyTorch torch.nn.Module的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: 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.luke.modeling_luke.EntityClassificationOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 输入序列标记在词汇表中的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 代表未被“掩盖”的标记,
- 0 代表被“掩盖”的标记。
什么是注意力掩码?
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 段标记索引,指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于句子 A标记。
- 1 对应于句子 B标记。
什么是标记类型 ID?
-
position_ids
(torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
entity_ids
(torch.LongTensor
of shape(batch_size, entity_length)
) — 实体词汇表中实体标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 -
entity_attention_mask
(torch.FloatTensor
of shape(batch_size, entity_length)
, optional) — 避免在填充实体标记索引上执行注意力的掩码。选择的掩码值在[0, 1]
中:- 1 表示未被
masked
的实体标记, - 0 表示被
masked
的实体标记。
- 1 表示未被
-
entity_token_type_ids
(torch.LongTensor
of shape(batch_size, entity_length)
, optional) — 段标记索引,指示实体标记输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于部分 A实体标记,
- 1 对应于部分 B实体标记。
-
entity_position_ids
(torch.LongTensor
of shape(batch_size, entity_length, max_mention_length)
, optional) — 每个输入实体在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 -
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。 -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块中的选定头部失效的掩码。选择的掩码值在[0, 1]
中:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。 -
labels
(torch.LongTensor
of shape(batch_size,)
or(batch_size, num_labels)
, optional) — 用于计算分类损失的标签。如果形状为(batch_size,)
,则单标签分类使用交叉熵损失。在这种情况下,标签应包含应在[0, ..., config.num_labels - 1]
中的索引。如果形状为(batch_size, num_labels)
,则多标签分类使用二元交叉熵损失。在这种情况下,标签应只包含[0, 1]
,其中 0 和 1 分别表示 false 和 true。
返回
transformers.models.luke.modeling_luke.EntityClassificationOutput
或tuple(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.EntityClassificationOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(LukeConfig)和输入而异的各种元素。
-
loss
(torch.FloatTensor
of shape(1,)
, optional, returned whenlabels
is provided) — 分类损失。 -
logits
(torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — 分类分数(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 一个用于每个层的输出)。模型在每个层的输出的隐藏状态加上初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, entity_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 后的注意力权重,用于计算自注意力头中的加权平均值。
LukeForEntityClassification 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行前处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LukeForEntityClassification
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-large-finetuned-open-entity")
>>> model = LukeForEntityClassification.from_pretrained("studio-ousia/luke-large-finetuned-open-entity")
>>> text = "Beyoncé lives in Los Angeles."
>>> entity_spans = [(0, 7)] # character-based entity span corresponding to "Beyoncé"
>>> inputs = tokenizer(text, entity_spans=entity_spans, return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> predicted_class_idx = logits.argmax(-1).item()
>>> print("Predicted class:", model.config.id2label[predicted_class_idx])
Predicted class: person
LukeForEntityPairClassification
class transformers.LukeForEntityPairClassification
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
LUKE 模型在顶部具有分类头(两个实体标记的隐藏状态上的线性层)用于实体对分类任务,如 TACRED。
该模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
该模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: 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.luke.modeling_luke.EntityPairClassificationOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 表示未被屏蔽的标记,
- 0 表示被屏蔽的标记。
什么是注意力掩码?
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 指示输入的第一部分和第二部分的段标记索引。索引在[0, 1]
中选择:- 0 对应于句子 A标记,
- 1 对应于句子 B标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 每个输入序列标记在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 什么是位置 ID? -
entity_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
)- 实体词汇中实体标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 -
entity_attention_mask
(形状为(batch_size, entity_length)
的torch.FloatTensor
,可选)- 用于避免在填充实体标记索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 1 表示未被屏蔽的实体标记,
- 0 表示被屏蔽的实体标记。
-
entity_token_type_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
,可选)- 指示实体标记输入的第一部分和第二部分的段标记索引。索引在[0, 1]
中选择:- 0 对应于部分 A实体标记,
- 1 对应于部分 B实体标记。
-
entity_position_ids
(形状为(batch_size, entity_length, max_mention_length)
的torch.LongTensor
,可选)- 每个输入实体在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)- 可选地,您可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,这将非常有用,而不是使用模型的内部嵌入查找矩阵。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于使自注意力模块的选定头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被屏蔽,
- 0 表示头部被屏蔽。
-
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
,可选)- 是否返回一个 ModelOutput 而不是一个普通元组。 -
labels
(torch.LongTensor
,形状为(batch_size,)
或(batch_size, num_labels)
,optional) — 用于计算分类损失的标签。如果形状为(batch_size,)
,则用于单标签分类的交叉熵损失。在这种情况下,标签应包含应在[0, ..., config.num_labels - 1]
中的索引。如果形状为(batch_size, num_labels)
,则用于多标签分类的二元交叉熵损失。在这种情况下,标签应只包含[0, 1]
,其中 0 和 1 分别表示 false 和 true。
返回
transformers.models.luke.modeling_luke.EntityPairClassificationOutput
或tuple(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.EntityPairClassificationOutput
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(LukeConfig)和输入的不同元素。
-
loss
(torch.FloatTensor
,形状为(1,)
,optional,当提供labels
时返回) — 分类损失。 -
logits
(torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — SoftMax 之前的分类分数。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组。每层输出的模型隐藏状态加上初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, entity_length, hidden_size)
的torch.FloatTensor
元组。每层输出的实体隐藏状态加上初始实体嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
LukeyForEntityPairClassification 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后处理步骤,而后者会默默忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LukeForEntityPairClassification
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-large-finetuned-tacred")
>>> model = LukeForEntityPairClassification.from_pretrained("studio-ousia/luke-large-finetuned-tacred")
>>> text = "Beyoncé lives in Los Angeles."
>>> entity_spans = [
... (0, 7),
... (17, 28),
... ] # character-based entity spans corresponding to "Beyoncé" and "Los Angeles"
>>> inputs = tokenizer(text, entity_spans=entity_spans, return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> predicted_class_idx = logits.argmax(-1).item()
>>> print("Predicted class:", model.config.id2label[predicted_class_idx])
Predicted class: per:cities_of_residence
LukeForEntitySpanClassification
class transformers.LukeForEntitySpanClassification
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
LUKE 模型,顶部带有一个跨度分类头(隐藏状态输出的线性层),用于命名实体识别等任务。
该模型继承自 PreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
该模型还是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: Optional = None entity_start_positions: Optional = None entity_end_positions: 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.luke.modeling_luke.EntitySpanClassificationOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:- 1 表示未被掩码的标记,
- 0 表示被掩码的标记。
什么是注意力掩码?
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 指示输入的第一部分和第二部分的段标记索引。索引选在[0, 1]
之间:- 0 对应一个句子 A标记。
- 1 对应一个句子 B标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选在范围[0, config.max_position_embeddings - 1]
内。 什么是位置 ID? -
entity_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
)— 实体词汇表中实体标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 -
entity_attention_mask
(形状为(batch_size, entity_length)
的torch.FloatTensor
,可选)— 用于避免在填充实体标记索引上执行注意力的掩码。掩码值选在[0, 1]
之间:- 1 表示未被掩码的实体标记,
- 0 表示被掩码的实体标记。
-
entity_token_type_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
,可选)— 指示实体标记输入的第一部分和第二部分的段标记索引。索引选在[0, 1]
之间:- 0 对应一个部分 A实体标记,
- 1 对应一个部分 B实体标记。
-
entity_position_ids
(形状为(batch_size, entity_length, max_mention_length)
的torch.LongTensor
,可选)— 每个输入实体在位置嵌入中的位置索引。选在范围[0, config.max_position_embeddings - 1]
内。 -
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。 -
head_mask
(torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于使自注意力模块的选定头部失效的掩码。掩码值选定在[0, 1]
:- 1 表示头部未被掩盖,
- 0 表示头部被掩盖。
-
output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。 -
entity_start_positions
(torch.LongTensor
) — 实体在单词标记序列中的起始位置。 -
entity_end_positions
(torch.LongTensor
) — 实体在单词标记序列中的结束位置。 -
labels
(torch.LongTensor
,形状为(batch_size, entity_length)
或(batch_size, entity_length, num_labels)
,可选) — 用于计算分类损失的标签。如果形状为(batch_size, entity_length)
,则使用交叉熵损失进行单标签分类。在这种情况下,标签应包含应在[0, ..., config.num_labels - 1]
中的索引。如果形状为(batch_size, entity_length, num_labels)
,则使用二元交叉熵损失进行多标签分类。在这种情况下,标签应只包含[0, 1]
,其中 0 和 1 分别表示 false 和 true。
返回
transformers.models.luke.modeling_luke.EntitySpanClassificationOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.luke.modeling_luke.EntitySpanClassificationOutput
或一个 torch.FloatTensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时),包括根据配置(LukeConfig)和输入的各种元素。
-
loss
(torch.FloatTensor
,形状为(1,)
,可选,当提供了labels
时返回) — 分类损失。 -
logits
(torch.FloatTensor
,形状为(batch_size, entity_length, config.num_labels)
) — 分类分数(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递了output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出 一个用于每个层的输出)。模型在每个层的输出的隐藏状态加上初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
,可选,当传递了output_hidden_states=True
或当config.output_hidden_states=True
时返回) — 形状为(batch_size, entity_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 后的注意力权重,用于计算自注意力头中的加权平均值。
LukeyForEntitySpanClassification 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者则默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LukeForEntitySpanClassification
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-large-finetuned-conll-2003")
>>> model = LukeForEntitySpanClassification.from_pretrained("studio-ousia/luke-large-finetuned-conll-2003")
>>> text = "Beyoncé lives in Los Angeles"
# List all possible entity spans in the text
>>> word_start_positions = [0, 8, 14, 17, 21] # character-based start positions of word tokens
>>> word_end_positions = [7, 13, 16, 20, 28] # character-based end positions of word tokens
>>> entity_spans = []
>>> for i, start_pos in enumerate(word_start_positions):
... for end_pos in word_end_positions[i:]:
... entity_spans.append((start_pos, end_pos))
>>> inputs = tokenizer(text, entity_spans=entity_spans, return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> predicted_class_indices = logits.argmax(-1).squeeze().tolist()
>>> for span, predicted_class_idx in zip(entity_spans, predicted_class_indices):
... if predicted_class_idx != 0:
... print(text[span[0] : span[1]], model.config.id2label[predicted_class_idx])
Beyoncé PER
Los Angeles LOC
LukeForSequenceClassification
class transformers.LukeForSequenceClassification
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig)— 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
LUKE 模型变压器,顶部带有一个序列分类/回归头(在池化输出的顶部有一个线性层),例如用于 GLUE 任务。
这个模型继承自 PreTrainedModel。查看超类文档,了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是 PyTorch torch.nn.Module的子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有内容。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: 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.luke.modeling_luke.LukeSequenceClassifierOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
)— 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 对于未被“masked”掩盖的标记,将其设为 1,
- 对于被
masked
掩盖的标记,将其设为 0。
什么是注意力掩码?
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于句子 A标记,
- 1 对应于句子 B标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
entity_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
)— 实体词汇中实体标记的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 -
entity_attention_mask
(形状为(batch_size, entity_length)
的torch.FloatTensor
,可选)— 避免在填充实体标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 对于未被“masked”掩盖的实体标记,将其设为 1,
- 对于被
masked
掩盖的实体标记,将其设为 0。
-
entity_token_type_ids
(torch.LongTensor
of shape(batch_size, entity_length)
, optional) — 段标记索引,用于指示实体标记输入的第一部分和第二部分。索引选在[0, 1]
范围内:- 0 对应于部分 A实体标记,
- 1 对应于部分 B实体标记。
-
entity_position_ids
(torch.LongTensor
of shape(batch_size, entity_length, max_mention_length)
, optional) — 每个输入实体在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 -
inputs_embeds
(torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,这将很有用,而不是使用模型的内部嵌入查找矩阵。 -
head_mask
(torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 用于使自注意力模块的选定头部失效的掩码。掩码值选在[0, 1]
范围内。- 1 表示头部未被
masked
, - 0 表示头部是
masked
。
- 1 表示头部未被
-
output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。 -
output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。 -
return_dict
(bool
, optional) — 是否返回一个 ModelOutput 而不是一个普通元组。 -
labels
(torch.LongTensor
of shape(batch_size,)
, optional) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels == 1
,则计算回归损失(均方损失),如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回
transformers.models.luke.modeling_luke.LukeSequenceClassifierOutput
或 tuple(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.LukeSequenceClassifierOutput
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含根据配置(LukeConfig)和输入的各种元素。
-
loss
(torch.FloatTensor
of shape(1,)
, optional, returned whenlabels
is provided) — 分类(或回归,如果 config.num_labels==1)损失。 -
logits
(torch.FloatTensor
of shape(batch_size, config.num_labels)
) — 分类(或回归,如果 config.num_labels==1)得分(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入的输出加上每层的输出)。 模型每层输出的隐藏状态加上可选的初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
, optional, returned whenoutput_hidden_states=True
is passed or whenconfig.output_hidden_states=True
) — 形状为(batch_size, entity_length, hidden_size)
的torch.FloatTensor
元组(嵌入输出的输出加上每层的输出)。模型每层输出的实体隐藏状态加上初始实体嵌入输出。 -
attentions
(tuple(torch.FloatTensor)
, optional, returned whenoutput_attentions=True
is passed or whenconfig.output_attentions=True
) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
元组(每层一个)。 在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
LukeForSequenceClassification 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。
单标签分类的示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, LukeForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-base")
>>> model = LukeForSequenceClassification.from_pretrained("studio-ousia/luke-base")
>>> 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 = LukeForSequenceClassification.from_pretrained("studio-ousia/luke-base", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
多标签分类的示例:
代码语言:javascript复制>>> import torch
>>> from transformers import AutoTokenizer, LukeForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-base")
>>> model = LukeForSequenceClassification.from_pretrained("studio-ousia/luke-base", 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 = LukeForSequenceClassification.from_pretrained(
... "studio-ousia/luke-base", 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
LukeForMultipleChoice
class transformers.LukeForMultipleChoice
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig)- 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
LUKE 模型在顶部具有多选分类头(在池化输出的顶部和 softmax 上的线性层),例如用于 RocStories/SWAG 任务。
这个模型继承自 PreTrainedModel。查看超类文档,了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 PyTorch torch.nn.Module子类。将其用作常规的 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有事项。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: 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.luke.modeling_luke.LukeMultipleChoiceModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(形状为(batch_size, num_choices, sequence_length)
的torch.LongTensor
)- 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 什么是输入 ID? -
attention_mask
(形状为(batch_size, num_choices, sequence_length)
的torch.FloatTensor
,可选)- 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
之间:- 1 用于未被“掩码”的标记,
- 0 用于被“掩码”的标记。
什么是注意力掩码?
-
token_type_ids
(形状为(batch_size, num_choices, sequence_length)
的torch.LongTensor
,可选)- 段标记索引,用于指示输入的第一部分和第二部分。索引选择在[0, 1]
之间:- 0 对应于“句子 A”标记,
- 1 对应于“句子 B”标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, num_choices, sequence_length)
的torch.LongTensor
,可选)- 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
entity_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
)- 实体词汇表中实体标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 -
entity_attention_mask
(形状为(batch_size, entity_length)
的torch.FloatTensor
,可选) - 避免在填充实体标记索引上执行注意力的掩码。选择的掩码值在[0, 1]
中:- 1 表示未被
masked
的实体标记, - 对于被
masked
的实体标记为 0。
- 1 表示未被
-
entity_token_type_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
,可选) - 指示实体标记输入的第一部分和第二部分的段标记索引。索引在[0, 1]
中选择:- 0 对应于部分 A实体标记,
- 1 对应于部分 B实体标记。
-
entity_position_ids
(形状为(batch_size, entity_length, max_mention_length)
的torch.LongTensor
,可选) - 每个输入实体在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
inputs_embeds
(形状为(batch_size, num_choices, sequence_length, hidden_size)
的torch.FloatTensor
,可选) - 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制如何将input_ids
索引转换为相关向量,而不是模型的内部嵌入查找矩阵,则这很有用。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选) - 用于使自注意力模块的选定头部失效的掩码。选择的掩码值在[0, 1]
中:- 1 表示头部未被
masked
, - 0 表示头部被
masked
。
- 1 表示头部未被
-
output_attentions
(bool
,可选) - 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
,可选) - 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
,可选) - 是否返回 ModelOutput 而不是普通元组。 -
labels
(形状为(batch_size,)
的torch.LongTensor
,可选) - 用于计算多选分类损失的标签。索引应在[0, ..., num_choices-1]
中,其中num_choices
是输入张量的第二维的大小。(参见上面的input_ids
)
返回
transformers.models.luke.modeling_luke.LukeMultipleChoiceModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.LukeMultipleChoiceModelOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时)包括各种元素,取决于配置(LukeConfig)和输入。
-
loss
(形状为*(1,)*的torch.FloatTensor
,可选,当提供labels
时返回) - 分类损失。 -
logits
(形状为(batch_size, num_choices)
的torch.FloatTensor
) - num_choices是输入张量的第二维。(参见上面的input_ids)。 SoftMax 之前的分类分数。 -
hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) - 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(一个用于嵌入的输出,如果模型有一个嵌入层, 一个用于每个层的输出)。 每层模型的隐藏状态加上可选的初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回)— 形状为(batch_size, entity_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 之后的注意力权重,用于计算自注意力头中的加权平均值。
LukeyForMultipleChoice 的前向方法,覆盖了 __call__
特殊方法。
虽然前向传递的配方需要在此函数内定义,但应该在此之后调用 Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LukeForMultipleChoice
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-base")
>>> model = LukeForMultipleChoice.from_pretrained("studio-ousia/luke-base")
>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0) # choice0 is correct (according to Wikipedia ;)), batch size 1
>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels) # batch size is 1
>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logits
LukeForTokenClassification
transformers.LukeForTokenClassification
类
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。
LUKE 模型在顶部具有一个标记分类头(隐藏状态输出的线性层)。为了使用 LUKE 解决命名实体识别(NER)任务,比起这个类,更适合使用 LukeForEntitySpanClassification
。
此模型继承自 PreTrainedModel。查看超类文档以了解库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: 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.luke.modeling_luke.LukeTokenClassifierOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call
()。 什么是输入 ID? -
attention_mask
(torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:- 1 表示未被
masked
的标记, - 0 表示被
masked
的标记。
什么是注意力掩码?
- 1 表示未被
-
token_type_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 段标记索引,用于指示输入的第一部分和第二部分。索引选择在[0, 1]
中:- 0 对应于 句子 A 标记,
- 1 对应于 句子 B 标记。
令牌类型 ID 是什么?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)- 每个输入序列令牌在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 位置 ID 是什么? -
entity_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
)- 实体词汇中实体令牌的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参见 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 -
entity_attention_mask
(形状为(batch_size, entity_length)
的torch.FloatTensor
,可选)- 用于避免在填充实体令牌索引上执行注意力的掩码。掩码值在[0, 1]
中选择:- 对于未被“掩盖”的实体令牌,ID 为 1,
- 对于被“掩盖”的实体令牌,ID 为 0。
-
entity_token_type_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
,可选)- 段令牌索引,用于指示实体令牌输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于部分 A实体令牌,
- 1 对应于部分 B实体令牌。
-
entity_position_ids
(形状为(batch_size, entity_length, max_mention_length)
的torch.LongTensor
,可选)- 每个输入实体在位置嵌入中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 -
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)- 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望更多地控制如何将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,则这很有用。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)- 用于使自注意力模块的选定头部失效的掩码。掩码值在[0, 1]
中选择:- 1 表示头部未被“掩盖”,
- 0 表示头部被“掩盖”。
-
output_attentions
(bool
,可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。 -
output_hidden_states
(bool
,可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。 -
return_dict
(bool
,可选)- 是否返回一个 ModelOutput 而不是一个普通元组。 -
labels
(形状为(batch_size,)
的torch.LongTensor
,可选)- 用于计算多项选择分类损失的标签。索引应在[0, ..., num_choices-1]
中,其中num_choices
是输入张量第二维的大小。(请参见上面的input_ids
)
返回
transformers.models.luke.modeling_luke.LukeTokenClassifierOutput
或元组(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.LukeTokenClassifierOutput
或一个torch.FloatTensor
元组(如果传递了return_dict=False
或config.return_dict=False
时)包含根据配置(LukeConfig)和输入的不同元素。
-
loss
(形状为(1,)
的torch.FloatTensor
,可选,在提供labels
时返回)- 分类损失。 -
logits
(形状为(batch_size, sequence_length, config.num_labels)
的torch.FloatTensor
)- 分类得分(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则一个用于嵌入的输出 一个用于每层的输出)。 模型在每层输出的隐藏状态加上可选的初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
, 可选的, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, entity_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 之后。
LukeForTokenClassification 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会处理运行前后的处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LukeForTokenClassification
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-base")
>>> model = LukeForTokenClassification.from_pretrained("studio-ousia/luke-base")
>>> inputs = tokenizer(
... "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )
>>> with torch.no_grad():
... logits = model(**inputs).logits
>>> predicted_token_class_ids = logits.argmax(-1)
>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
LukeForQuestionAnswering
class transformers.LukeForQuestionAnswering
<来源>
代码语言:javascript复制( config )
参数
config
(LukeConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
LUKE 模型在顶部具有一个跨度分类头,用于提取式问答任务,如 SQuAD(在隐藏状态输出的线性层上计算span start logits
和span end logits
)。
此模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
此模型也是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取与一般用法和行为相关的所有信息。
forward
<来源>
代码语言:javascript复制( input_ids: Optional = None attention_mask: Optional = None token_type_ids: Optional = None position_ids: Optional = None entity_ids: Optional = None entity_attention_mask: Optional = None entity_token_type_ids: Optional = None entity_position_ids: Optional = None head_mask: Optional = None inputs_embeds: Optional = None start_positions: Optional = None end_positions: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.luke.modeling_luke.LukeQuestionAnsweringModelOutput or tuple(torch.FloatTensor)
参数
-
input_ids
(torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。 可以使用 AutoTokenizer 获取索引。查看 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()获取详细信息。 什么是输入 ID? -
attention_mask
(形状为(batch_size, sequence_length)
的torch.FloatTensor
,可选)— 用于避免在填充标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:- 1 用于未被“掩盖”的标记,
- 0 用于被“掩盖”的标记。
什么是注意力掩码?
-
token_type_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 段标记索引,指示输入的第一部分和第二部分。索引选择在[0, 1]
中:- 0 对应于句子 A标记,
- 1 对应于句子 B标记。
什么是标记类型 ID?
-
position_ids
(形状为(batch_size, sequence_length)
的torch.LongTensor
,可选)— 每个输入序列标记在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 什么是位置 ID? -
entity_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
)— 实体词汇中实体标记的索引。 可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode()和 PreTrainedTokenizer.call
()。 -
entity_attention_mask
(形状为(batch_size, entity_length)
的torch.FloatTensor
,可选)— 用于避免在填充实体标记索引上执行注意力的掩码。掩码值选择在[0, 1]
中:- 1 用于未被“掩盖”的实体标记,
- 0 用于被“掩盖”的实体标记。
-
entity_token_type_ids
(形状为(batch_size, entity_length)
的torch.LongTensor
,可选)— 段标记索引,指示实体标记输入的第一部分和第二部分。索引选择在[0, 1]
中:- 0 对应于部分 A实体标记,
- 1 对应于部分 B实体标记。
-
entity_position_ids
(形状为(batch_size, entity_length, max_mention_length)
的torch.LongTensor
,可选)— 每个输入实体在位置嵌入中的位置索引。选择范围为[0, config.max_position_embeddings - 1]
。 -
inputs_embeds
(形状为(batch_size, sequence_length, hidden_size)
的torch.FloatTensor
,可选)— 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您想要更多控制权来将input_ids
索引转换为相关向量,而不是使用模型的内部嵌入查找矩阵,这将非常有用。 -
head_mask
(形状为(num_heads,)
或(num_layers, num_heads)
的torch.FloatTensor
,可选)— 用于使自注意力模块的选定头部失效的掩码。掩码值选择在[0, 1]
中:- 1 表示头部未被“掩盖”,
- 0 表示头部被“掩盖”。
-
output_attentions
(bool
,可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回的张量下的attentions
。 -
output_hidden_states
(bool
,可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回的张量下的hidden_states
。 -
return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。 -
start_positions
(形状为(batch_size,)
的torch.LongTensor
,可选)— 用于计算标记范围开始位置的位置(索引)的标签,以计算标记分类损失。位置被夹紧到序列的长度(sequence_length
)。超出序列范围的位置不会用于计算损失。 -
end_positions
(torch.LongTensor
形状为(batch_size,)
, optional) — 用于计算标记跨度结束位置的位置(索引)的标签。位置被夹紧到序列的长度(sequence_length
)。序列外的位置不会被考虑在内计算损失。
返回
transformers.models.luke.modeling_luke.LukeQuestionAnsweringModelOutput
或tuple(torch.FloatTensor)
一个transformers.models.luke.modeling_luke.LukeQuestionAnsweringModelOutput
或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
)包含各种元素,取决于配置(LukeConfig)和输入。
-
loss
(torch.FloatTensor
形状为(1,)
, optional, 当提供labels
时返回) — 总跨度提取损失是起始位置和结束位置的交叉熵之和。 -
start_logits
(torch.FloatTensor
形状为(batch_size, sequence_length)
) — 跨度起始得分(SoftMax 之前)。 -
end_logits
(torch.FloatTensor
形状为(batch_size, sequence_length)
) — 跨度结束得分(SoftMax 之前)。 -
hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入的输出 每一层的输出)的形状为(batch_size, sequence_length, hidden_size)
。 模型在每一层输出的隐藏状态加上可选的初始嵌入输出。 -
entity_hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) —torch.FloatTensor
元组(嵌入输出 每一层的输出)的形状为(batch_size, entity_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 后的注意力权重,用于计算自注意力头中的加权平均值。
LukeForQuestionAnswering 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
代码语言:javascript复制>>> from transformers import AutoTokenizer, LukeForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("studio-ousia/luke-base")
>>> model = LukeForQuestionAnswering.from_pretrained("studio-ousia/luke-base")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()
>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index 1]
>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])
>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss