Transformers 文档
LUKE
并获取增强的文档体验
开始使用
LUKE
概述
LUKE 模型在 LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention 中被提出,作者是 Ikuya Yamada、Akari Asai、Hiroyuki Shindo、Hideaki Takeda 和 Yuji Matsumoto。它基于 RoBERTa,并添加了实体嵌入以及实体感知自注意力机制,这有助于提高在各种下游任务中的性能,这些任务涉及实体推理,例如命名实体识别、抽取式和完形填空式问题回答、实体类型分类和关系分类。
该论文的摘要如下:
实体表示在涉及实体的自然语言任务中非常有用。在本文中,我们提出了基于双向 Transformer 的单词和实体的新型预训练上下文表示。所提出的模型将给定文本中的单词和实体视为独立的 tokens,并输出它们的上下文表示。我们的模型使用基于 BERT 的掩码语言模型的新预训练任务进行训练。该任务涉及预测从维基百科检索的大型实体注释语料库中随机掩码的单词和实体。我们还提出了一种实体感知自注意力机制,它是 Transformer 的自注意力机制的扩展,并在计算注意力分数时考虑 tokens 的类型(单词或实体)。所提出的模型在各种实体相关任务上取得了令人印象深刻的实证性能。特别是,它在五个著名的基准数据集上获得了最先进的结果:Open Entity(实体类型分类)、TACRED(关系分类)、CoNLL-2003(命名实体识别)、ReCoRD(完形填空式问题回答)和 SQuAD 1.1(抽取式问题回答)。
此模型由 ikuyamada 和 nielsr 贡献。原始代码可以在这里找到。
使用技巧
此实现与 RobertaModel 相同,但增加了实体嵌入和实体感知自注意力机制,从而提高了在涉及实体推理的任务上的性能。
LUKE 将实体视为输入 tokens;因此,它需要
entity_ids
、entity_attention_mask
、entity_token_type_ids
和entity_position_ids
作为额外的输入。您可以使用 LukeTokenizer 获取这些输入。LukeTokenizer 接受
entities
和entity_spans
(输入文本中实体的基于字符的起始和结束位置)作为额外的输入。entities
通常由 [MASK] 实体或维基百科实体组成。输入这些实体时的简要说明如下:- 输入 [MASK] 实体以计算实体表示:[MASK] 实体用于掩码在预训练期间要预测的实体。当 LUKE 接收到 [MASK] 实体时,它会尝试通过从输入文本中收集有关实体的信息来预测原始实体。因此,[MASK] 实体可用于解决需要文本中实体信息的下游任务,例如实体类型分类、关系分类和命名实体识别。
- 输入维基百科实体以计算知识增强的 token 表示:LUKE 在预训练期间学习了有关维基百科实体的丰富信息(或知识),并将信息存储在其实体嵌入中。通过使用维基百科实体作为输入 tokens,LUKE 输出由存储在这些实体的嵌入中的信息丰富的 token 表示。这对于需要真实世界知识的任务(例如问题回答)特别有效。
前一种用例有三种头部模型:
- LukeForEntityClassification,用于对输入文本中的单个实体进行分类的任务,例如实体类型分类,例如 Open Entity 数据集。此模型在输出实体表示之上放置一个线性头。
- LukeForEntityPairClassification,用于对两个实体之间的关系进行分类的任务,例如关系分类,例如 TACRED 数据集。此模型在给定实体对的连接输出表示之上放置一个线性头。
- LukeForEntitySpanClassification,用于对实体跨度序列进行分类的任务,例如命名实体识别 (NER)。此模型在输出实体表示之上放置一个线性头。您可以通过将文本中所有可能的实体跨度输入到模型来解决 NER 问题。
LukeTokenizer 有一个
task
参数,使您可以通过指定task="entity_classification"
、task="entity_pair_classification"
或task="entity_span_classification"
轻松地为这些头部模型创建输入。请参阅每个头部模型的示例代码。
使用示例
>>> 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](/docs/transformers/v4.50.0/en/model_doc/luke#transformers.LukeForEntityPairClassification) 以进行关系分类的演示 notebook
- 展示如何使用 HuggingFace 实现的 LUKE 复现论文中报告的结果的 Notebook
- 文本分类任务指南
- Token 分类任务指南
- 问答任务指南
- Masked language modeling 任务指南
- 多项选择任务指南
LukeConfig
class transformers.LukeConfig
< source >( 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 时传递的inputs_ids
可以表示的不同 token 的数量。 - entity_vocab_size (
int
, 可选, 默认为 500000) — LUKE 模型的实体词汇表大小。定义了在调用 LukeModel 时传递的entity_ids
可以表示的不同实体的数量。 - hidden_size (
int
, 可选, 默认为 768) — 编码器层和池化层的维度。 - entity_emb_size (
int
, 可选, 默认为 256) — 实体嵌入的维度数量。 - num_hidden_layers (
int
, 可选, 默认为 12) — Transformer 编码器中隐藏层的数量。 - num_attention_heads (
int
, 可选, 默认为 12) — Transformer 编码器中每个注意力层的注意力头数。 - intermediate_size (
int
, 可选, 默认为 3072) — Transformer 编码器中“中间”层(通常称为前馈层)的维度。 - hidden_act (
str
或Callable
, 可选, 默认为"gelu"
) — 编码器和池化器中的非线性激活函数(函数或字符串)。如果为字符串,则支持"gelu"
、"relu"
、"silu"
和"gelu_new"
。 - hidden_dropout_prob (
float
, 可选, 默认为 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。 - attention_probs_dropout_prob (
float
, 可选, 默认为 0.1) — 注意力概率的 dropout 比率。 - max_position_embeddings (
int
, 可选, 默认为 512) — 此模型可能使用的最大序列长度。通常将其设置为较大的值以防万一(例如,512 或 1024 或 2048)。 - type_vocab_size (
int
, 可选, 默认为 2) — 调用 LukeModel 时传递的token_type_ids
的词汇表大小。 - initializer_range (
float
, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。 - layer_norm_eps (
float
, 可选, 默认为 1e-12) — layer normalization 层使用的 epsilon 值。 - use_entity_aware_attention (
bool
, 可选, 默认为True
) — 模型是否应使用 LUKE: Deep Contextualized Entity Representations with Entity-aware Self-attention (Yamada et al.) 中提出的实体感知自注意力机制。 - classifier_dropout (
float
, 可选) — 分类头的 dropout 比率。 - pad_token_id (
int
, 可选, 默认为 1) — Padding token id. - bos_token_id (
int
, 可选, 默认为 0) — Beginning of stream token id. - eos_token_id (
int
, 可选, 默认为 2) — End of stream token id.
这是用于存储 LukeModel 配置的配置类。它用于根据指定的参数实例化 LUKE 模型,定义模型架构。使用默认值实例化配置将产生类似于 LUKE studio-ousia/luke-base 架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。请阅读 PretrainedConfig 的文档以获取更多信息。
LukeTokenizer
class transformers.LukeTokenizer
< source >( 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
) — merges 文件的路径。 - entity_vocab_file (
str
) — 实体词汇表文件的路径。 - task (
str
, 可选) — 你想要准备序列的任务。 必须是"entity_classification"
,"entity_pair_classification"
, 或"entity_span_classification"
其中之一。 如果你指定了这个参数,实体序列会基于给定的实体 span 自动创建。 - max_entity_length (
int
, 可选, 默认为 32) —entity_ids
的最大长度。 - max_mention_length (
int
, 可选, 默认为 30) — 实体 span 内的最大 token 数量。 - entity_token_1 (
str
, 可选, 默认为<ent>
) — 用于表示单词 token 序列中实体 span 的特殊 token。 此 token 仅在task
设置为"entity_classification"
或"entity_pair_classification"
时使用。 - entity_token_2 (
str
, 可选, 默认为<ent2>
) — 用于表示单词 token 序列中实体 span 的特殊 token。 此 token 仅在task
设置为"entity_pair_classification"
时使用。 - errors (
str
, 可选, 默认为"replace"
) — 将字节解码为 UTF-8 时要遵循的范例。 有关更多信息,请参阅 bytes.decode。 - bos_token (
str
, 可选, 默认为"<s>"
) — 预训练期间使用的序列开始 token。 可以用作序列分类器 token。当使用特殊 token 构建序列时,这不是用于序列开始的 token。 使用的 token 是
cls_token
。 - eos_token (
str
, 可选, 默认为"</s>"
) — 序列结束 token。当使用特殊 token 构建序列时,这不是用于序列结束的 token。 使用的 token 是
sep_token
。 - sep_token (
str
, 可选, 默认为"</s>"
) — 分隔符 token,用于从多个序列构建序列时,例如,用于序列分类的两个序列或用于问答的文本和问题。 它也用作使用特殊 token 构建的序列的最后一个 token。 - cls_token (
str
, 可选, 默认为"<s>"
) — 分类器 token,用于执行序列分类(对整个序列而不是每个 token 进行分类)。 当使用特殊 token 构建时,它是序列的第一个 token。 - unk_token (
str
, 可选, 默认为"<unk>"
) — 未知 token。 词汇表中不存在的 token 无法转换为 ID,而是设置为此 token。 - pad_token (
str
, 可选, 默认为"<pad>"
) — 用于填充的 token,例如,当批量处理不同长度的序列时。 - mask_token (
str
, 可选, 默认为"<mask>"
) — 用于遮盖值的 token。 这是使用掩码语言建模训练此模型时使用的 token。 这是模型将尝试预测的 token。 - add_prefix_space (
bool
, 可选, 默认为False
) — 是否在输入中添加初始空格。 这允许像对待任何其他单词一样对待首单词。(LUKE tokenizer 通过前导空格检测单词的开头)。
构建 LUKE tokenizer,它源自 GPT-2 tokenizer,使用字节级 Byte-Pair-Encoding。
此 tokenizer 经过训练,将空格视为 token 的一部分(有点像 sentencepiece),因此一个词会
根据它是否在句子的开头(没有空格)而以不同的方式编码
>>> 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]
您可以通过在实例化此 tokenizer 或在某些文本上调用它时传递 add_prefix_space=True
来解决此行为,但由于模型不是以这种方式预训练的,因此可能会导致性能下降。
当与 is_split_into_words=True
一起使用时,此 tokenizer 将在每个单词(甚至是第一个单词)之前添加一个空格。
此 tokenizer 继承自 PreTrainedTokenizer,其中包含大多数主要方法。 用户应参考此超类以获取有关这些方法的更多信息。 它还创建实体序列,即 entity_ids
、entity_attention_mask
、entity_token_type_ids
和 entity_position_ids
,供 LUKE 模型使用。
__call__
< source >( text: typing.Union[str, typing.List[str]] text_pair: typing.Union[str, typing.List[str], NoneType] = None entity_spans: typing.Union[typing.List[typing.Tuple[int, int]], typing.List[typing.List[typing.Tuple[int, int]]], NoneType] = None entity_spans_pair: typing.Union[typing.List[typing.Tuple[int, int]], typing.List[typing.List[typing.Tuple[int, int]]], NoneType] = None entities: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None entities_pair: typing.Union[typing.List[str], typing.List[typing.List[str]], NoneType] = None add_special_tokens: bool = True padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = False truncation: typing.Union[bool, str, transformers.tokenization_utils_base.TruncationStrategy] = None max_length: typing.Optional[int] = None max_entity_length: typing.Optional[int] = None stride: int = 0 is_split_into_words: typing.Optional[bool] = False pad_to_multiple_of: typing.Optional[int] = None padding_side: typing.Optional[str] = None return_tensors: typing.Union[str, transformers.utils.generic.TensorType, NoneType] = None return_token_type_ids: typing.Optional[bool] = None return_attention_mask: typing.Optional[bool] = 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 ) → BatchEncoding
参数
- text (
str
,List[str]
,List[List[str]]
) — 要编码的序列或序列批次。 每个序列必须是字符串。 请注意,此 tokenizer 不支持基于预 token 化字符串的 token 化。 - text_pair (
str
,List[str]
,List[List[str]]
) — 要编码的序列或序列批次。 每个序列必须是字符串。 请注意,此 tokenizer 不支持基于预 token 化字符串的 token 化。 - entity_spans (
List[Tuple[int, int]]
,List[List[Tuple[int, int]]]
, optional) — 要编码的实体跨度的序列或序列批次。每个序列由元组组成,每个元组包含两个整数,表示实体的基于字符的起始和结束位置。如果您在构造函数中将task
参数指定为"entity_classification"
或"entity_pair_classification"
,则每个序列的长度必须分别为 1 或 2。如果您指定entities
,则每个序列的长度必须等于每个entities
序列的长度。 - entity_spans_pair (
List[Tuple[int, int]]
,List[List[Tuple[int, int]]]
, optional) — 要编码的实体跨度的序列或序列批次。每个序列由元组组成,每个元组包含两个整数,表示实体的基于字符的起始和结束位置。如果您在构造函数中指定了task
参数,则此参数将被忽略。如果您指定entities_pair
,则每个序列的长度必须等于每个entities_pair
序列的长度。 - entities (
List[str]
,List[List[str]]
, optional) — 要编码的实体序列或实体序列批次。每个序列由表示实体的字符串组成,即特殊实体(例如,[MASK])或维基百科的实体标题(例如,Los Angeles)。如果您在构造函数中指定了task
参数,则此参数将被忽略。每个序列的长度必须等于每个entity_spans
序列的长度。如果您指定了entity_spans
但未指定此参数,则实体序列或实体序列批次将通过填充 [MASK] 实体自动构建。 - entities_pair (
List[str]
,List[List[str]]
, optional) — 要编码的实体序列或实体序列批次。每个序列由表示实体的字符串组成,即特殊实体(例如,[MASK])或维基百科的实体标题(例如,Los Angeles)。如果您在构造函数中指定了task
参数,则此参数将被忽略。每个序列的长度必须等于每个entity_spans_pair
序列的长度。如果您指定了entity_spans_pair
但未指定此参数,则实体序列或实体序列批次将通过填充 [MASK] 实体自动构建。 - max_entity_length (
int
, optional) —entity_ids
的最大长度。 - add_special_tokens (
bool
, optional, defaults toTrue
) — 是否在编码序列时添加特殊 token。这将使用底层的PretrainedTokenizerBase.build_inputs_with_special_tokens
函数,该函数定义了哪些 token 会自动添加到输入 id 中。如果您想自动添加bos
或eos
token,这将非常有用。 - padding (
bool
,str
or PaddingStrategy, optional, defaults toFalse
) — 激活并控制填充。接受以下值:True
或'longest'
:填充到批次中最长的序列(如果仅提供单个序列,则不填充)。'max_length'
:填充到由参数max_length
指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。False
或'do_not_pad'
(默认):不填充(即,可以输出具有不同长度序列的批次)。
- truncation (
bool
,str
or TruncationStrategy, optional, defaults toFalse
) — 激活并控制截断。接受以下值:True
或'longest_first'
:截断为由参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将逐个 token 截断,从序列对中最长的序列中移除 token。'only_first'
:截断为由参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断序列对中的第一个序列。'only_second'
:截断为由参数max_length
指定的最大长度,如果未提供该参数,则截断为模型可接受的最大输入长度。如果提供了一对序列(或一批序列对),这将仅截断序列对中的第二个序列。False
或'do_not_truncate'
(默认):不截断(即,可以输出序列长度大于模型最大允许输入大小的批次)。
- max_length (
int
, optional) — 控制截断/填充参数之一使用的最大长度。如果未设置或设置为
None
,如果截断/填充参数之一需要最大长度,则将使用预定义的模型最大长度。如果模型没有特定的最大输入长度(如 XLNet),则将停用截断/填充到最大长度。 - stride (
int
, optional, defaults to 0) — 如果与max_length
一起设置一个数字,则当return_overflowing_tokens=True
时返回的溢出 token 序列将包含来自截断序列末尾的一些 token,以便在截断序列和溢出序列之间提供一些重叠。此参数的值定义了重叠 token 的数量。 - is_split_into_words (
bool
, optional, defaults toFalse
) — 输入是否已预先 token 化(例如,拆分为单词)。如果设置为True
,则 tokenizers 假设输入已拆分为单词(例如,通过在空格上拆分),它将对其进行 token 化。这对于 NER 或 token 分类非常有用。 - pad_to_multiple_of (
int
, optional) — 如果设置,将序列填充为提供值的倍数。需要激活padding
。这对于在计算能力>= 7.5
(Volta) 的 NVIDIA 硬件上启用 Tensor Cores 的使用尤其有用。 - padding_side (
str
, optional) — 模型应在其上应用填充的一侧。应在 [‘right’, ‘left’] 中选择。默认值是从同名类属性中选择的。 - return_tensors (
str
or TensorType, optional) — 如果设置,将返回 tensor 而不是 python 整数列表。可接受的值为:'tf'
:返回 TensorFlowtf.constant
对象。'pt'
:返回 PyTorchtorch.Tensor
对象。'np'
:返回 Numpynp.ndarray
对象。
- return_token_type_ids (
bool
, optional) — 是否返回 token 类型 ID。如果保留为默认值,将根据特定 tokenizer 的默认值返回 token 类型 ID,由return_outputs
属性定义。 - return_attention_mask (
bool
, optional) — 是否返回 attention mask。如果保留为默认值,将根据特定 tokenizer 的默认值返回 attention mask,由return_outputs
属性定义。 - return_overflowing_tokens (
bool
, optional, defaults toFalse
) — 是否返回溢出的 token 序列。如果提供了一对输入 id 序列(或一批序列对),且truncation_strategy = longest_first
或True
,则会引发错误,而不是返回溢出的 token。 - return_special_tokens_mask (
bool
, optional, defaults toFalse
) — 是否返回特殊 token mask 信息。 - return_offsets_mapping (
bool
, optional, defaults toFalse
) — 是否为每个 token 返回(char_start, char_end)
。这仅在继承自 PreTrainedTokenizerFast 的快速 tokenizer 上可用,如果使用 Python 的 tokenizer,此方法将引发
NotImplementedError
。 - return_length (
bool
, optional, defaults toFalse
) — 是否返回编码输入的长度。 - verbose (
bool
, optional, defaults toTrue
) — 是否打印更多信息和警告。 - **kwargs — 传递给
self.tokenize()
方法
带有以下字段的 BatchEncoding
-
input_ids — 要馈送到模型的 token id 列表。
-
token_type_ids — 要馈送到模型的 token 类型 id 列表(当
return_token_type_ids=True
或如果 “token_type_ids” 在self.model_input_names
中时)。 -
attention_mask — 指定模型应注意哪些 token 的索引列表(当
return_attention_mask=True
或如果 “attention_mask” 在self.model_input_names
中时)。 -
entity_ids — 要馈送到模型的实体 id 列表。
-
entity_position_ids — 要馈送到模型的输入序列中实体位置的列表。
-
entity_token_type_ids — 要馈送到模型的实体 token 类型 id 列表(当
return_token_type_ids=True
或如果 “entity_token_type_ids” 在self.model_input_names
中时)。 -
entity_attention_mask — 指定模型应注意哪些实体的索引列表(当
return_attention_mask=True
或如果 “entity_attention_mask” 在self.model_input_names
中时)。 -
entity_start_positions — 单词 token 序列中实体的起始位置列表(当
task="entity_span_classification"
时)。 -
entity_end_positions — 单词 token 序列中实体的结束位置列表(当
task="entity_span_classification"
时)。 -
overflowing_tokens — 溢出的 token 序列列表(当指定了
max_length
且return_overflowing_tokens=True
时)。 -
num_truncated_tokens — 截断的 token 数量(当指定了
max_length
且return_overflowing_tokens=True
时)。 -
special_tokens_mask — 0 和 1 的列表,其中 1 指定添加的特殊 token,0 指定常规序列 token(当
add_special_tokens=True
且return_special_tokens_mask=True
时)。 -
length — 输入的长度(当
return_length=True
时)
主要方法,用于对一个或多个序列或一个或多个序列对进行 token 化和模型准备,具体取决于您要为其准备的任务。
LukeModel
类 transformers.LukeModel
< source >( config: LukeConfig add_pooling_layer: bool = True )
参数
- config (LukeConfig) — 带有模型所有参数的 Model configuration class。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法来加载模型权重。
裸 LUKE 模型 transformer 输出原始 hidden-states,用于单词 tokens 和 entities,顶部没有任何特定的 head。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.FloatTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.BaseLukeModelOutputWithPooling
or tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
, 可选) — 用于避免在 padding token 索引上执行 attention 的掩码。Mask 值在[0, 1]
中选择:- 1 表示 未被掩盖 的 tokens,
- 0 表示 已被掩盖 的 tokens。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — Segment token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — 每个输入序列 tokens 在 position embeddings 中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
) — 实体词汇表中实体 tokens 的索引。可以使用 AutoTokenizer 获取索引。有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- entity_attention_mask (
torch.FloatTensor
,形状为(batch_size, entity_length)
, 可选) — 用于避免在 padding 实体 token 索引上执行 attention 的掩码。Mask 值在[0, 1]
中选择:- 1 表示 未被掩盖 的实体 tokens,
- 0 表示 已被掩盖 的实体 tokens。
- entity_token_type_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
, 可选) — Segment token 索引,用于指示实体 token 输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 portion A 实体 token,
- 1 对应于 portion B 实体 token。
- entity_position_ids (
torch.LongTensor
,形状为(batch_size, entity_length, max_mention_length)
, 可选) — 每个输入实体在 position embeddings 中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
, 可选) — (可选) ,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精确地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
, 可选) — 用于 nullify self-attention 模块的选定 head 的掩码。Mask 值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 已被掩盖。
- output_attentions (
bool
, 可选) — 是否返回所有 attention 层的 attentions 张量。 有关更多详细信息,请参见返回的张量下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参见返回的张量下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回一个 ModelOutput 而不是一个普通的元组。
返回
transformers.models.luke.modeling_luke.BaseLukeModelOutputWithPooling
or 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)
) — 模型最后一层的输出端的 hidden-states 序列。 - entity_last_hidden_state (
torch.FloatTensor
,形状为(batch_size, entity_length, hidden_size)
) — 模型最后一层的输出端的实体 hidden-states 序列。 - pooler_output (
torch.FloatTensor
,形状为(batch_size, hidden_size)
) — 序列的第一个 token (分类 token) 的最后一层 hidden-state,通过 Linear 层和 Tanh 激活函数进一步处理。 - hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, sequence_length, hidden_size)
。 模型在每一层输出端的 Hidden-states 加上初始 embedding 输出。 - entity_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 - attentions (
tuple(torch.FloatTensor)
, 可选, 当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的元组(每层一个),形状为(batch_size, num_heads, sequence_length + entity_length, sequence_length + entity_length)
。 attention softmax 之后的 Attention 权重,用于计算 self-attention heads 中的加权平均值。
LukeModel 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
示例
>>> 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
类 transformers.LukeForMaskedLM
< source >( config )
参数
- config (LukeConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。请查看 from_pretrained() 方法来加载模型权重。
带有语言建模头和实体预测头的 LUKE 模型,用于掩码语言建模和掩码实体预测。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.LongTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None labels: typing.Optional[torch.LongTensor] = None entity_labels: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.LukeMaskedLMOutput
或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 用于避免在 padding token 索引上执行 attention 的 Mask。Mask 值在[0, 1]
中选择:- 1 表示 tokens 未被掩码,
- 0 表示 tokens 被掩码。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — Segment token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列 tokens 在 position embeddings 中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
) — 实体词汇表中实体 tokens 的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- entity_attention_mask (
torch.FloatTensor
,形状为(batch_size, entity_length)
,可选) — 用于避免在 padding 实体 token 索引上执行 attention 的 Mask。Mask 值在[0, 1]
中选择:- 1 表示实体 tokens 未被掩码,
- 0 表示实体 tokens 被掩码。
- entity_token_type_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
,可选) — Segment token 索引,用于指示实体 token 输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 portion A 实体 token,
- 1 对应于 portion B 实体 token。
- entity_position_ids (
torch.LongTensor
,形状为(batch_size, entity_length, max_mention_length)
,可选) — 每个输入实体在 position embeddings 中的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部 embedding lookup 矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于 nullify self-attention 模块中选定 heads 的 Mask。Mask 值在[0, 1]
中选择:- 1 表示 head 未被掩码,
- 0 表示 head 被掩码。
- output_attentions (
bool
,可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参见返回的 tensors 下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参见返回的 tensors 下的hidden_states
。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是纯 tuple。 - labels (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
中(请参阅input_ids
docstring)。索引设置为-100
的 tokens 将被忽略(掩码),损失仅针对标签在[0, ..., config.vocab_size]
中的 tokens 计算。 - entity_labels (
torch.LongTensor
,形状为(batch_size, entity_length)
,可选) — 用于计算掩码语言建模损失的标签。索引应在[-100, 0, ..., config.vocab_size]
中(请参阅input_ids
docstring)。索引设置为-100
的 tokens 将被忽略(掩码),损失仅针对标签在[0, ..., config.vocab_size]
中的 tokens 计算。
返回
transformers.models.luke.modeling_luke.LukeMaskedLMOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.luke.modeling_luke.LukeMaskedLMOutput
或一个 torch.FloatTensor
的 tuple (如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (LukeConfig) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 掩码语言建模 (MLM) 损失和实体预测损失的总和。 -
mlm_loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 掩码语言建模 (MLM) 损失。 -
mep_loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 掩码实体预测 (MEP) 损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 语言建模头的预测分数(SoftMax 之前每个词汇表 token 的分数)。 -
entity_logits (
torch.FloatTensor
,形状为(batch_size, sequence_length, config.vocab_size)
) — 实体预测头的预测分数(SoftMax 之前每个实体词汇表 token 的分数)。 -
hidden_states (
tuple(torch.FloatTensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的 Tuple(embeddings 输出一个,每层输出一个),形状为(batch_size, sequence_length, hidden_size)
。模型在每一层输出以及初始 embedding 输出的 Hidden-states。
-
entity_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 -
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LukeForMaskedLM forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
LukeForEntityClassification
class transformers.LukeForEntityClassification
< source >( config )
参数
- config (LukeConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。请查看 from_pretrained() 方法来加载模型权重。
带有分类头的 LUKE 模型(实体分类任务的分类头位于第一个实体 token 的 hidden state 之上,为一个线性层),例如 Open Entity。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< 源码 >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.FloatTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.EntityClassificationOutput
or tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以了解详情。
- attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 掩码,用于避免在 padding token 索引上执行 attention。 掩码值在[0, 1]
中选择:- 1 表示 未被掩盖 的 tokens,
- 0 表示 被掩盖 的 tokens。
- token_type_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 分段 token 索引,用于指示输入的第一个和第二个部分。 索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列 token 在位置 embeddings 中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
of shape(batch_size, entity_length)
) — 实体词汇表中实体 tokens 的索引。索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以了解详情。
- entity_attention_mask (
torch.FloatTensor
of shape(batch_size, entity_length)
, optional) — 掩码,用于避免在 padding 实体 token 索引上执行 attention。 掩码值在[0, 1]
中选择:- 1 表示 未被掩盖 的实体 tokens,
- 0 表示 被掩盖 的实体 tokens。
- entity_token_type_ids (
torch.LongTensor
of shape(batch_size, entity_length)
, optional) — 分段 token 索引,用于指示实体 token 输入的第一个和第二个部分。 索引在[0, 1]
中选择:- 0 对应于 部分 A 实体 token,
- 1 对应于 部分 B 实体 token。
- entity_position_ids (
torch.LongTensor
of shape(batch_size, entity_length, max_mention_length)
, optional) — 每个输入实体在位置 embeddings 中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
of shape(batch_size, sequence_length, hidden_size)
, optional) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部 embedding 查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - head_mask (
torch.FloatTensor
of shape(num_heads,)
or(num_layers, num_heads)
, optional) — 掩码,用于使 self-attention 模块的选定 head 无效。 掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- output_attentions (
bool
, optional) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参见返回的 tensors 下的attentions
。 - output_hidden_states (
bool
, optional) — 是否返回所有层的 hidden states。 有关更多详细信息,请参见返回的 tensors 下的hidden_states
。 - return_dict (
bool
, optional) — 是否返回 ModelOutput 而不是普通 tuple。 - labels (
torch.LongTensor
of shape(batch_size,)
or(batch_size, num_labels)
, optional) — 用于计算分类损失的标签。 如果 shape 是(batch_size,)
,则交叉熵损失用于单标签分类。 在这种情况下,标签应包含[0, ..., config.num_labels - 1]
中的索引。 如果 shape 是(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
的 tuple(如果传递了 return_dict=False
或当 config.return_dict=False
时),包含各种元素,具体取决于配置 (LukeConfig) 和输入。
- loss (
torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 分类损失。 - logits (
torch.FloatTensor
of shape(batch_size, config.num_labels)
) — 分类得分(SoftMax 之前)。 - hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, sequence_length, hidden_size)
。 模型在每一层输出端的 Hidden-states 加上初始 embedding 输出。 - entity_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 - attentions (
tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的 Tuple(每层一个)。 attention softmax 之后的 Attention 权重,用于计算 self-attention heads 中的加权平均值。
The LukeForEntityClassification 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
示例
>>> 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
< 源码 >( config )
参数
- config (LukeConfig) — 模型配置类,包含模型的所有参数。 使用配置文件初始化不会加载与模型关联的权重,而只会加载配置。 查看 from_pretrained() 方法以加载模型权重。
LUKE 模型,顶部带有一个分类 head(位于两个实体 tokens 的 hidden states 之上的线性层),用于实体对分类任务,例如 TACRED。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< 源码 >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.FloatTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.EntityPairClassificationOutput
or tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
) — 词汇表中输入序列 tokens 的索引。索引可以使用 AutoTokenizer 获得。 参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 以了解详情。
- attention_mask (
torch.FloatTensor
of shape(batch_size, sequence_length)
, optional) — 掩码,用于避免在 padding token 索引上执行 attention。 掩码值在[0, 1]
中选择:- 1 表示 未被掩盖 的 tokens,
- 0 表示 被掩盖 的 tokens。
- token_type_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 分段 token 索引,用于指示输入的第一个和第二个部分。 索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
torch.LongTensor
of shape(batch_size, sequence_length)
, optional) — 每个输入序列 token 在位置 embeddings 中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
) — 实体词汇表中实体 tokens 的索引。索引可以使用 AutoTokenizer 获得。 请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 获取详细信息。
- entity_attention_mask (
torch.FloatTensor
,形状为(batch_size, entity_length)
, 可选) — 用于避免在 padding 实体 token 索引上执行 attention 的 Mask。 Mask 值在[0, 1]
中选择:- 1 表示实体 tokens 未被 Mask,
- 0 表示实体 tokens 已被 Mask。
- entity_token_type_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
, 可选) — 分段 token 索引,用于指示实体 token 输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 portion A 实体 token,
- 1 对应于 portion B 实体 token。
- entity_position_ids (
torch.LongTensor
,形状为(batch_size, entity_length, max_mention_length)
, 可选) — 每个输入实体在位置 embeddings 中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
, 可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您想要比模型的内部 embedding 查找矩阵更精细地控制如何将input_ids
索引转换为关联向量,这将非常有用。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
, 可选) — 用于 nullify self-attention 模块中选定 head 的 Mask。 Mask 值在[0, 1]
中选择:- 1 表示 head 未被 Mask,
- 0 表示 head 已被 Mask。
- output_attentions (
bool
, 可选) — 是否返回所有 attention 层的 attentions tensors。 有关更多详细信息,请参阅返回的 tensors 下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通 tuple。 - labels (
torch.LongTensor
,形状为(batch_size,)
或(batch_size, num_labels)
, 可选) — 用于计算分类损失的标签。 如果形状为(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
的 tuple (如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含取决于配置 (LukeConfig) 和输入的各种元素。
- loss (
torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 分类损失。 - logits (
torch.FloatTensor
of shape(batch_size, config.num_labels)
) — 分类得分(SoftMax 之前)。 - hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, sequence_length, hidden_size)
。 模型在每一层输出端的 Hidden-states 加上初始 embedding 输出。 - entity_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 - attentions (
tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的 Tuple(每层一个)。 attention softmax 之后的 Attention 权重,用于计算 self-attention heads 中的加权平均值。
LukeForEntityPairClassification 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
示例
>>> 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
< source >( config )
参数
- config (LukeConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。
LUKE 模型,顶部带有一个 span 分类 head(位于 hidden states 输出顶部的线性层),用于命名实体识别等任务。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.LongTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None entity_start_positions: typing.Optional[torch.LongTensor] = None entity_end_positions: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.EntitySpanClassificationOutput
或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
) — 输入序列 tokens 在词汇表中的索引。索引可以使用 AutoTokenizer 获得。 请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 获取详细信息。
- attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
, 可选) — 用于避免在 padding token 索引上执行 attention 的 Mask。 Mask 值在[0, 1]
中选择:- 1 表示 tokens 未被 Mask,
- 0 表示 tokens 已被 Mask。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 sentence A token,
- 1 对应于 sentence B token。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
, 可选) — 每个输入序列 tokens 在位置 embeddings 中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
) — 实体词汇表中实体 tokens 的索引。索引可以使用 AutoTokenizer 获得。 请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call() 获取详细信息。
- entity_attention_mask (
torch.FloatTensor
,形状为(batch_size, entity_length)
, 可选) — 用于避免在 padding 实体 token 索引上执行 attention 的 Mask。 Mask 值在[0, 1]
中选择:- 1 表示实体 tokens 未被 Mask,
- 0 表示实体 tokens 已被 Mask。
- entity_token_type_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
, 可选) — 分段 token 索引,用于指示实体 token 输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于 portion A 实体 token,
- 1 对应于 portion B 实体 token。
- entity_position_ids (
torch.LongTensor
,形状为(batch_size, entity_length, max_mention_length)
, 可选) — 每个输入实体在位置 embeddings 中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
, 可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您想要比模型的内部 embedding 查找矩阵更精细地控制如何将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 分别表示假和真。
返回
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
of shape(1,)
, optional, 当提供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
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, sequence_length, hidden_size)
。 模型在每一层输出端的 Hidden-states 加上初始 embedding 输出。 - entity_hidden_states (
tuple(torch.FloatTensor)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 - attentions (
tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或当config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的torch.FloatTensor
的 Tuple(每层一个)。 attention softmax 之后的 Attention 权重,用于计算 self-attention heads 中的加权平均值。
LukeForEntitySpanClassification 的前向方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
示例
>>> 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
< source >( config )
参数
- config (LukeConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法以加载模型权重。
带有序列分类/回归头的 LUKE 模型转换器(池化输出顶部的线性层),例如用于 GLUE 任务。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.FloatTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.LukeSequenceClassifierOutput
或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
) — 词汇表中输入序列标记的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
,形状为(batch_size, sequence_length)
,可选) — 避免对填充令牌索引执行注意力的掩码。 掩码值在[0, 1]
中选择:- 1 表示令牌未被掩蔽,
- 0 表示令牌被掩蔽。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 段落令牌索引,用于指示输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于句子 A 令牌,
- 1 对应于句子 B 令牌。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 每个输入序列令牌在位置嵌入中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
) — 实体词汇表中实体令牌的索引。索引可以使用 AutoTokenizer 获得。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- entity_attention_mask (
torch.FloatTensor
,形状为(batch_size, entity_length)
,可选) — 避免对填充实体令牌索引执行注意力的掩码。 掩码值在[0, 1]
中选择:- 1 表示实体令牌未被掩蔽,
- 0 表示实体令牌被掩蔽。
- entity_token_type_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
,可选) — 段落令牌索引,用于指示实体令牌输入的第一部分和第二部分。 索引在[0, 1]
中选择:- 0 对应于部分 A 实体令牌,
- 1 对应于部分 B 实体令牌。
- entity_position_ids (
torch.LongTensor
,形状为(batch_size, entity_length, max_mention_length)
,可选) — 每个输入实体在位置嵌入中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望更好地控制如何将input_ids
索引转换为关联向量,而不是模型的内部嵌入查找矩阵,这将非常有用。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于置空自注意力模块中选定头的掩码。 掩码值在[0, 1]
中选择:- 1 表示头未被掩蔽,
- 0 表示头被掩蔽。
- output_attentions (
bool
, optional) — 是否返回所有注意力层的注意力张量。 详见返回张量下的attentions
。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐藏状态。 详见返回张量下的hidden_states
。 - return_dict (
bool
, optional) — 是否返回 ModelOutput 而不是一个普通的元组。 - labels (
torch.LongTensor
,形状为(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
,形状为(1,)
,optional,当提供labels
时返回) — 分类(或回归,如果 config.num_labels==1)损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, config.num_labels)
) — 分类(或回归,如果 config.num_labels==1)得分(在 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)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 -
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LukeForSequenceClassification 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
单标签分类示例
>>> 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
多标签分类示例
>>> 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
< source >( config )
参数
- config (LukeConfig) — 带有模型所有参数的模型配置类。 使用配置文件初始化不会加载与模型关联的权重,仅加载配置。 查看 from_pretrained() 方法来加载模型权重。
带有用于多项选择分类头的 LUKE 模型(池化输出顶部的线性层和一个 softmax),例如用于 RocStories/SWAG 任务。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.FloatTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.LukeMultipleChoiceModelOutput
或 tuple(torch.FloatTensor)
参数
- input_ids (
torch.LongTensor
,形状为(batch_size, num_choices, sequence_length)
) — 词汇表中输入序列标记的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (
torch.FloatTensor
,形状为(batch_size, num_choices, sequence_length)
,optional) — 用于避免在 padding 标记索引上执行注意力的掩码。 掩码值在[0, 1]
中选择:- 1 表示标记未被掩盖,
- 0 表示标记被掩盖。
- token_type_ids (
torch.LongTensor
,形状为(batch_size, num_choices, sequence_length)
,optional) — 分段标记索引以指示输入的第一个和第二个部分。 索引在[0, 1]
中选择:- 0 对应于 sentence A 标记,
- 1 对应于 sentence B 标记。
- position_ids (
torch.LongTensor
,形状为(batch_size, num_choices, sequence_length)
,optional) — 每个输入序列标记在位置嵌入中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
) — 实体词汇表中实体标记的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参见 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- entity_attention_mask (
torch.FloatTensor
,形状为(batch_size, entity_length)
,optional) — 用于避免在 padding 实体标记索引上执行注意力的掩码。 掩码值在[0, 1]
中选择:- 1 表示实体标记未被掩盖,
- 0 表示实体标记被掩盖。
- entity_token_type_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
,optional) — 分段标记索引以指示实体标记输入的第一个和第二个部分。 索引在[0, 1]
中选择:- 0 对应于 portion A 实体标记,
- 1 对应于 portion B 实体标记。
- entity_position_ids (
torch.LongTensor
,形状为(batch_size, entity_length, max_mention_length)
,optional) — 每个输入实体在位置嵌入中的位置索引。 在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
,形状为(batch_size, num_choices, sequence_length, hidden_size)
,optional) — (可选)您可以选择直接传递嵌入表示,而不是传递input_ids
。 如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联的向量,这将非常有用。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,optional) — 用于使自注意力模块的选定头无效的掩码。 掩码值在[0, 1]
中选择:- 1 表示头未被掩盖,
- 0 表示头被掩盖。
- output_attentions (
bool
, optional) — 是否返回所有注意力层的注意力张量。 详见返回张量下的attentions
。 - output_hidden_states (
bool
, optional) — 是否返回所有层的隐藏状态。 详见返回张量下的hidden_states
。 - return_dict (
bool
, optional) — 是否返回 ModelOutput 而不是一个普通的元组。 - labels (
torch.LongTensor
,形状为(batch_size,)
,optional) — 用于计算多项选择分类损失的标签。 索引应在[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 (
torch.FloatTensor
,形状为 (1,),optional,当提供labels
时返回) — 分类损失。 -
logits (
torch.FloatTensor
,形状为(batch_size, num_choices)
) — num_choices 是输入张量的第二个维度。 (请参阅上面的 input_ids)。分类得分(在 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)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 -
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LukeForMultipleChoice 的 forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
示例
>>> 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
class transformers.LukeForTokenClassification
< source >( config )
参数
- config (LukeConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有 token 分类头的 LUKE 模型(位于 hidden-states 输出之上的线性层)。要使用 LUKE 解决命名实体识别 (NER) 任务,LukeForEntitySpanClassification
比此类更适合。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.LongTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.FloatTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None labels: typing.Optional[torch.FloatTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.LukeTokenClassifierOutput
or tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
) — 词汇表中输入序列 tokens 的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (形状为
(batch_size, sequence_length)
的torch.FloatTensor
, 可选) — 掩码,以避免在 padding token 索引上执行 attention。掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩盖,
- 0 表示 tokens 被掩盖。
- token_type_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 位置嵌入中每个输入序列 tokens 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (形状为
(batch_size, entity_length)
的torch.LongTensor
) — 实体词汇表中实体 tokens 的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- entity_attention_mask (形状为
(batch_size, entity_length)
的torch.FloatTensor
, 可选) — 掩码,以避免在 padding 实体 token 索引上执行 attention。掩码值在[0, 1]
中选择:- 1 表示实体 tokens 未被掩盖,
- 0 表示实体 tokens 被掩盖。
- entity_token_type_ids (形状为
(batch_size, entity_length)
的torch.LongTensor
, 可选) — 分段 token 索引,用于指示实体 token 输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 部分 A 实体 token,
- 1 对应于 部分 B 实体 token。
- 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
, 可选) — 掩码,用于使 self-attention 模块的选定 head 无效。掩码值在[0, 1]
中选择:- 1 表示 head 未被掩盖,
- 0 表示 head 被掩盖。
- output_attentions (
bool
, 可选) — 是否返回所有 attention 层的 attention tensors。 有关更多详细信息,请参阅返回的 tensors 下的attentions
。 - output_hidden_states (
bool
, 可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回的 tensors 下的hidden_states
。 - return_dict (
bool
, 可选) — 是否返回 ModelOutput 而不是普通 tuple。 - labels (形状为
(batch_size,)
的torch.LongTensor
, 可选) — 用于计算多项选择分类损失的标签。索引应为[0, ..., num_choices-1]
,其中num_choices
是输入 tensors 的第二个维度的大小。(参见上面的input_ids
)
返回
transformers.models.luke.modeling_luke.LukeTokenClassifierOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.luke.modeling_luke.LukeTokenClassifierOutput
或 torch.FloatTensor
的 tuple(如果传递了 return_dict=False
或当 config.return_dict=False
时),包括取决于配置 (LukeConfig) 和输入的各种元素。
-
loss (
torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 分类损失。 -
logits (形状为
(batch_size, sequence_length, config.num_labels)
的torch.FloatTensor
) — 分类分数(在 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)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 -
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
LukeForTokenClassification forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
示例
>>> 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
< source >( config )
参数
- config (LukeConfig) — 带有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,仅加载配置。查看 from_pretrained() 方法以加载模型权重。
带有 span 分类头的 LUKE 模型,用于解决抽取式问答任务,如 SQuAD(位于 hidden-states 输出之上的线性层,用于计算 span start logits
和 span end logits
)。
此模型继承自 PreTrainedModel。查看超类文档以了解库为其所有模型实现的通用方法(例如 downloading 或 saving,resizing the input embeddings,pruning heads 等)。
此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch Module,并参阅 PyTorch 文档,以了解与常规用法和行为相关的所有事项。
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = None attention_mask: typing.Optional[torch.FloatTensor] = None token_type_ids: typing.Optional[torch.LongTensor] = None position_ids: typing.Optional[torch.FloatTensor] = None entity_ids: typing.Optional[torch.LongTensor] = None entity_attention_mask: typing.Optional[torch.FloatTensor] = None entity_token_type_ids: typing.Optional[torch.LongTensor] = None entity_position_ids: typing.Optional[torch.LongTensor] = None head_mask: typing.Optional[torch.FloatTensor] = None inputs_embeds: typing.Optional[torch.FloatTensor] = None start_positions: typing.Optional[torch.LongTensor] = None end_positions: typing.Optional[torch.LongTensor] = None output_attentions: typing.Optional[bool] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) → transformers.models.luke.modeling_luke.LukeQuestionAnsweringModelOutput
或 tuple(torch.FloatTensor)
参数
- input_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
) — 词汇表中输入序列 tokens 的索引。可以使用 AutoTokenizer 获取索引。 有关详细信息,请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.call()。
- attention_mask (形状为
(batch_size, sequence_length)
的torch.FloatTensor
, 可选) — 掩码,以避免在 padding token 索引上执行 attention。掩码值在[0, 1]
中选择:- 1 表示 tokens 未被掩盖,
- 0 表示 tokens 被掩盖。
- token_type_ids (形状为
(batch_size, sequence_length)
的torch.LongTensor
, 可选) — 分段 token 索引,用于指示输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 句子 A token,
- 1 对应于 句子 B token。
- position_ids (
torch.LongTensor
,形状为(batch_size, sequence_length)
,可选) — 位置嵌入中每个输入序列 token 的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - entity_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
) — 实体词汇表中实体 token 的索引。索引可以使用 AutoTokenizer 获取。 详情请参阅 PreTrainedTokenizer.encode() 和 PreTrainedTokenizer.__call__()。
- entity_attention_mask (
torch.FloatTensor
,形状为(batch_size, entity_length)
,可选) — 用于避免对 padding 实体 token 索引执行 attention 的 mask。Mask 值在[0, 1]
中选择:- 1 表示实体 token **不被 mask**,
- 0 表示实体 token **被 mask**。
- entity_token_type_ids (
torch.LongTensor
,形状为(batch_size, entity_length)
,可选) — 段 token 索引,用于指示实体 token 输入的第一部分和第二部分。索引在[0, 1]
中选择:- 0 对应于 *portion A* 实体 token,
- 1 对应于 *portion B* 实体 token。
- entity_position_ids (
torch.LongTensor
,形状为(batch_size, entity_length, max_mention_length)
,可选) — 位置嵌入中每个输入实体的位置索引。在范围[0, config.max_position_embeddings - 1]
中选择。 - inputs_embeds (
torch.FloatTensor
,形状为(batch_size, sequence_length, hidden_size)
,可选) — 可选地,您可以选择直接传递嵌入表示,而不是传递input_ids
。如果您希望比模型的内部嵌入查找矩阵更精细地控制如何将input_ids
索引转换为关联向量,这将非常有用。 - head_mask (
torch.FloatTensor
,形状为(num_heads,)
或(num_layers, num_heads)
,可选) — 用于 nullify 自注意力模块中选定 head 的 mask。Mask 值在[0, 1]
中选择:- 1 表示 head **不被 mask**,
- 0 表示 head **被 mask**。
- output_attentions (
bool
,可选) — 是否返回所有 attention 层的 attention tensors。 有关更多详细信息,请参阅返回 tensors 下的attentions
。 - output_hidden_states (
bool
,可选) — 是否返回所有层的 hidden states。 有关更多详细信息,请参阅返回 tensors 下的hidden_states
。 - return_dict (
bool
,可选) — 是否返回 ModelOutput 而不是 plain tuple。 - start_positions (
torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算 token 分类损失的带标签 span 起始位置(索引)的标签。位置被限制在序列的长度 (`sequence_length`) 内。序列之外的位置不纳入损失计算的考虑范围。 - end_positions (
torch.LongTensor
,形状为(batch_size,)
,可选) — 用于计算 token 分类损失的带标签 span 结束位置(索引)的标签。位置被限制在序列的长度 (`sequence_length`) 内。序列之外的位置不纳入损失计算的考虑范围。
返回
transformers.models.luke.modeling_luke.LukeQuestionAnsweringModelOutput
或 tuple(torch.FloatTensor)
一个 transformers.models.luke.modeling_luke.LukeQuestionAnsweringModelOutput
或一个 torch.FloatTensor
的 tuple (如果传递了 return_dict=False
或当 config.return_dict=False
时),其中包含各种元素,具体取决于配置 (LukeConfig) 和输入。
-
loss (
torch.FloatTensor
,形状为(1,)
,可选,当提供labels
时返回) — 总 span 抽取损失是起始位置和结束位置的交叉熵之和。 -
start_logits (
torch.FloatTensor
,形状为(batch_size, sequence_length)
) — Span-start 分数(SoftMax 之前)。 -
end_logits (
torch.FloatTensor
,形状为(batch_size, sequence_length)
) — Span-end 分数(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)
, 可选, 当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回) —torch.FloatTensor
的元组(embeddings 的输出一个,每层的输出一个),形状为(batch_size, entity_length, hidden_size)
。 模型在每一层输出端的实体 hidden-states 加上初始实体 embedding 输出。 -
attentions (
tuple(torch.FloatTensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回) —torch.FloatTensor
的 Tuple(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)
。attention softmax 之后的 Attentions 权重,用于计算 self-attention heads 中的加权平均值。
的 LukeForQuestionAnswering forward 方法,覆盖了 __call__
特殊方法。
尽管 forward pass 的配方需要在此函数中定义,但应该在之后调用 Module
实例,而不是直接调用此函数,因为前者负责运行 pre and post processing steps,而后者会静默地忽略它们。
示例
>>> 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