Transformers文档

X-MOD

性能和可扩展性
贡献
概念指南
API
主要类
模型
内部辅助器
Hugging Face's logo
加入Hugging Face社区

并获得增强文档体验的访问权限

开始使用

X-MOD

概述

《通过预训练模块化 Transformer 消除多语言诅咒》一文中提出了 X-MOD 模型,该文由 Jonas Pfeiffer、Naman Goyal、Xi Lin、Xian Li、James Cross、Sebastian Riedel 和 Mikel Artetxe 撰写。[链接](http://dx.doi.org/10.18653/v1/2022.naacl-main.255) X-MOD 扩展了像 XLM-R 这样的多语言掩码语言模型,在预训练期间包括了特定语言的模块化组件(语言适配器)。在微调过程中,每一层的语言适配器都被冻结。

以下是论文的摘要:

已知多语言预训练模型受多语言诅咒之苦,覆盖的语言越多,每种语言的性能就会下降。我们通过引入特定语言的模块来解决此问题,这使我们能够增加模型的总体容量,同时保持每种语言的可训练参数总数保持不变。与后续学习特定语言组件的工作不同,我们从一开始就对跨语言模块化(X-MOD)模型的模块进行预训练。我们在自然语言推理、命名实体识别和问答上的实验表明,我们的方法不仅减轻了语言之间的负面影响,还实现了积极的迁移,从而提高了单语言和多语言性能。此外,我们的方法可以在后来添加语言而不会引起性能的明显下降,不再限制模型的使用限于预训练的语言集合。

该模型由 jvamvas 贡献。原始代码可在[这里](https://github.com/facebookresearch/fairseq/tree/58cc6cca18f15e6d56e3f60c959fe4f878960a60/fairseq/models/xmod)找到,原始文档可在[这里](https://github.com/facebookresearch/fairseq/tree/58cc6cca18f15e6d56e3f60c959fe4f878960a60/examples/xmod)找到。

使用技巧

技巧

  • X-MOD 与 XLM-R 类似,但不同之处在于需要指定输入语言以激活正确的语言适配器。
  • 主要模型(基础和大型)为 81 种语言提供了适配器。

适配器使用

输入语言

指定输入语言有两种方式

  1. 在模型使用前设置默认语言
from transformers import XmodModel

model = XmodModel.from_pretrained("facebook/xmod-base")
model.set_default_language("en_XX")
  1. 通过显式传递每个样本的语言适配器索引
import torch

input_ids = torch.tensor(
    [
        [0, 581, 10269, 83, 99942, 136, 60742, 23, 70, 80583, 18276, 2],
        [0, 1310, 49083, 443, 269, 71, 5486, 165, 60429, 660, 23, 2],
    ]
)
lang_ids = torch.LongTensor(
    [
        0,  # en_XX
        8,  # de_DE
    ]
)
output = model(input_ids, lang_ids=lang_ids)

微调

论文推荐在微调期间冻结嵌入层和语言适配器。提供了一种实现这一点的方案。

model.freeze_embeddings_and_language_adapters()
# Fine-tune the model ...

跨语言迁移

微调后,可以通过激活目标语言的适配器来测试零样本跨语言迁移。

model.set_default_language("de_DE")
# Evaluate the model on German examples ...

资源

XmodConfig

transformers.XmodConfig

< >

参数

  • vocab_size (int, 可选, 默认为30522) — X-MOD模型词汇表大小。定义了在调用XmodModelinputs_ids可以代表的不同标记的数量。
  • hidden_size (int, 可选, 默认为768) — 编码层和池化层的维度。
  • num_hidden_layers (int, 可选, 默认为12) — Transformer编码器中的隐藏层数。
  • num_attention_heads (int, 可选, 默认值为12) — Transformer编码器每个注意力层的注意力头数。
  • intermediate_size (int, 可选, 默认值为3072) — Transformer编码器中“中间层”(通常称为前馈层)的维度。
  • hidden_act (strCallable, 可选, 默认为 "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) — 在调用 XmodModel 时传入的 token_type_ids 的词汇表大小。
  • initializer_range (float, 可选,默认为0.02) — 用于初始化所有权重矩阵的截断正态分布初始化器的标准差。
  • layer_norm_eps (float, 可选,默认为1e-12) — 层归一化层使用的ε值。
  • position_embedding_type (str, 可选,默认为 "absolute") — 位置嵌入类型。选择其中一个 "absolute""relative_key""relative_key_query"。对于位置嵌入,请选择 "absolute"。有关 "relative_key" 的更多信息,请参阅《Self-Attention with Relative Position Representations (Shaw et al.)》(https://arxiv.org/abs/1803.02155)。有关 "relative_key_query" 的更多信息,请参阅《Improve Transformer Models with Better Relative Position Embeddings (Huang et al.)》中的第 方法 4(https://arxiv.org/abs/2009.13658)。
  • is_decoder (bool, 可选,默认为 False) — 模型是否用作解码器。如果为 False,则模型用作编码器。
  • use_cache (bool, 可选,默认为 True) — 模型是否应返回最后的键/值注意力(并非所有模型都使用)。仅当 config.is_decoder=True 时相关。
  • classifier_dropout (float, 可选) — 分类头的丢弃比例。
  • pre_norm (bool, 可选, 默认为 False) — 是否在每个块之前应用层归一化。
  • adapter_reduction_factor (intfloat, 可选, 默认为 2) — 相对于 hidden_size,适配器维度减少的系数。
  • adapter_layer_norm (bool, 可选, 默认为 False) — 是否在适配器模块(所有适配器共享)之前应用新的层归一化。
  • adapter_reuse_layer_norm (bool, 可选, 默认为 True) — 是否复用第二个层归一化并将其应用于适配器模块之前。
  • ln_before_adapter (bool, 可选, 默认为 True) — 是否在适配器模块周围的残差连接之前应用层归一化。
  • languages (Iterable[str], 可选, 默认为 ["en_XX"]) — 应初始化适配器模块的语言代码序列。
  • default_language (str, optional) — 默认语言的代码。如果没有明确传递语言代码到前向方法,则假设输入在此语言中。

这是存储 XmodModel 配置的配置类。它用于根据指定的参数实例化 X-MOD 模型,定义模型架构。使用默认值实例化配置将产生与 facebook/xmod-base 架构相似的配置。

配置对象继承自 PretrainedConfig 并可以用于控制模型输出。更多详细信息请参阅 PretrainedConfig 文档。

示例

>>> from transformers import XmodConfig, XmodModel

>>> # Initializing an X-MOD facebook/xmod-base style configuration
>>> configuration = XmodConfig()

>>> # Initializing a model (with random weights) from the facebook/xmod-base style configuration
>>> model = XmodModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

XmodModel

class transformers.XmodModel

< >

( config add_pooling_layer = True )

参数

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

裸 X-MOD 模型变压器输出原始隐藏状态,没有任何特定头。

此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。

模型可以表现为编码器(只有自注意力),也可以表现为解码器,在这种情况下,在自注意力层之间添加了一层交叉注意力,遵循 Ashish Vaswani、Noam Shazeer、Niki Parmar、Jakob Uszkoreit、Llion Jones、Aidan N. Gomez、Lukasz Kaiser 和 Illia Polosukhin 在 Attention is all you need 中描述的架构。

要表现为解码器,模型需要用配置的 is_decoder 参数设置为 True 来初始化。要用于 Seq2Seq 模型,模型需要同时将 is_decoder 参数和 add_cross_attention 设置为 True;正向传递时预期输入为 encoder_hidden_states

.. _Attention is all you need: https://arxiv.org/abs/1706.03762

前向传递

< >

( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None encoder_hidden_states: 可选 = None encoder_attention_mask: 可选 = None past_key_values: 可选 = None use_cache: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 输入序列标记在词汇表中的索引。

    索引可以通过使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

  • lang_ids (torch.LongTensor 形状为 (batch_size, sequence_length)可选) — 分别为每个样本应激活的语言适配器的索引。默认值:对应于 self.config.default_language 的索引。
  • 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 的标记。

    什么是标记类型 ID?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length)可选) — 每个输入序列标记在位置嵌入中的位置索引。选择范围在 [0, config.max_position_embeddings - 1] 之间。

    什么是位置ID?

  • head_mask (torch.FloatTensor 形状为 (num_heads,)(num_layers, num_heads)可选) — 用于取消自我注意模块中选定头的掩码。掩码值选择在 [0, 1]

    • 1 表示该头未被掩码,
    • 0 表示该头被掩码。
  • inputs_embeds (torch.FloatTensor 形状为 (batch_size, sequence_length, hidden_size)可选) — 可选,直接传递嵌入表示,而不是传递 input_ids。这在您想更多地控制如何将 input_ids 索引转换为相关向量,而不仅仅是模型内部嵌入查找矩阵时非常有用。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。关于返回张量下的更多详细信息,请参阅 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。关于返回张量下的更多详细信息,请参阅 hidden_states
  • return_dict (bool, 可选) — 是否返回ModelOutput而不仅仅是平常见组。
  • encoder_hidden_states (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor,可选) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则用于交叉注意力操作。
  • encoder_attention_mask (形状为 (batch_size, sequence_length)torch.FloatTensor,可选) — 用于避免对编码器输入中的填充标记索引执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用掩码。掩码值范围选择在 [0, 1]

    • 1 表示 未掩码 的标记;
    • 0 表示 掩码 的标记。
  • past_key_values (长度为 config.n_layerstuple(tuple(torch.FloatTensor)),每个元组包含 4 个张量)
  • of 形状 (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

  • use_cachebool可选)- 如果设置为 True,则返回 past_key_values 的键值状态,并可用来加速解码(见 past_key_values)。

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

虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module 实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。

XmodForCausalLM

class transformers.XmodForCausalLM

< >

( config )

参数

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

带有顶部语言建模头的 X-MOD 模型,用于 CLM 微调。

此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。

前向传递

< >

( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None encoder_hidden_states: 可选 = None encoder_attention_mask: 可选 = None labels: 可选 = None past_key_values: Tuple = None use_cache: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )

参数

  • input_ids (torch.LongTensor of shape (batch_size, sequence_length)) — 输入序列 token 在词汇表中的索引。

    索引可以通过使用 AutoTokenizer 获得。详情请见 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    输入 ID 是什么?

  • lang_ids (torch.LongTensor 的形状为 (batch_size, sequence_length),可选项) — 分别为每个样本应激活的语言适配器索引。默认值:与 self.config.default_language 对应的索引。
  • 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 标记。

    什么是标记类型 ID?

  • position_ids (形状为 (batch_size, sequence_length)torch.LongTensor,可选)—— 每个输入序列标记的位置嵌入中的索引。选取范围 [0, config.max_position_embeddings - 1]

    什么是位置ID?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)torch.FloatTensor,可选)—— 用于中止自注意力模块选定的头的掩码。掩码值在 [0, 1] 范围内:

    • 1 表示头未 掩码
    • 0 表示头被 掩码
  • inputs_embeds (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor,可选)—— 可选的,您可以选择传入嵌入式表示而不传递 input_ids。如果您希望比模型内部嵌入查找矩阵有更多控制权来将 input_ids 索引转换为相关向量,则此操作很有用。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。详细信息请见返回张量中的attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。详细信息请见返回张量中的hidden_states
  • return_dict (bool, 可选) — 是否返回ModelOutput,而不是一个普通的元组。
  • encoder_hidden_states (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), 可选) — 编码器最后一层的隐藏状态序列。如果模型配置为解码器,则在交叉注意力中用于。,// HTML_TAG_END -->
  • encoder_attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), 可选) — 避免在编码器输入中的填充标记索引上执行注意力的掩码。如果模型配置为解码器,则在交叉注意力中使用。掩码值选择在 [0, 1] 范围内:
    • 1 表示 未掩码 的标记;
    • 0 表示 掩码 的标记。
    ,// HTML_TAG_END -->
  • labels (torch.LongTensor of shape (batch_size, sequence_length), 可选) — 用于计算从左到右的语言模型损失(下一个词预测)的标签。索引应在 [-100, 0, ..., config.vocab_size] 范围内(见 input_ids 的文档说明)。索引设置为 -100 的标记将被忽略(掩码),仅计算标签在 [0, ..., config.vocab_size] 范围内的标记的损失。,// HTML_TAG_END -->

《XmodForCausalLM》的前向方法,覆盖了 __call__ 特殊方法。

虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module 实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。

transformers.XmodForMaskedLM

< >

( config )

参数

  • config (XmodConfig) — Model configuration class with all the parameters of the model. Initializing with a config file does not load the weights associated with the model, only the configuration. Check out the from_pretrained() method to load the model weights.

X-MOD 模型,顶部带有 语言建模 的头。

此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。

前向传递

< >

参数

  • lang_ids (torch.LongTensor of shape (batch_size, sequence_length), 可选) — 对应每个样本应激活的语言适配器索引。默认:与self.config.default_language对应的索引。
  • attention_mask (torch.FloatTensor of shape (batch_size, sequence_length), 可选) — 用于防止在填充token索引上执行注意力的掩码。在[0, 1]中选定的掩码值:

    • 对于未掩码的token,为1,
    • 对于已掩码的token,为0。

    注意掩码是什么?

  • token_type_ids (torch.LongTensor of shape (batch_size, sequence_length), 可选) — 用于指示输入的第一和第二部分的段token索引。在[0, 1]中选定的索引:

    token类型ID是什么?

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。请参阅返回的张量中的 attentions 以获取更多详细信息。
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。请参阅返回的张量中的 hidden_states 以获取更多详细信息。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。
  • labelstorch.LongTensor 形状为 (batch_size, sequence_length)可选) — 用于计算掩码语言模型损失的标签。索引应在 [-100, 0, ..., config.vocab_size](见 input_ids 的文档字符串)范围内。索引设置为 -100 的标记将被忽略(掩码),损失只对带有标签的范围在 [0, ..., config.vocab_size] 的标记进行计算。
  • kwargsDict[str, any]可选,默认为 {}) — 用于隐藏已弃用的旧参数。

XmodForMaskedLM 的 forward 方法,重载了 __call__ 特殊方法。

虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module 实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。

XmodForSequenceClassification

transformers.XmodForSequenceClassification

< >

( config )

参数

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

X-MOD 模型转换器,在上方具有序列分类/回归头部(在池化输出之上的一层线性层),例如用于 GLUE 任务。

此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。

前向传递

< >

( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )

参数

  • attention_mask (torch.FloatTensor 的形状为 (batch_size, sequence_length)可选) — 避免在填充 token 索引上执行 attention 的掩码。选定的掩码值在 [0, 1] 范围内:

    • 1 表示 未掩码 的 token,
    • 0 表示 已掩码 的 token。

    什么是 attention masks?

  • token_type_ids (torch.LongTensor 的形状为 (batch_size, sequence_length)可选) — 用于指示输入的首次和第二部分的 segment token 索引。选定的索引在 [0, 1] 范围内:

    • 0 对应于 句子 A token,
    • 1 对应于 句子 B token。

    什么是 token type IDs?

  • position_ids (torch.LongTensor 的形状为 (batch_size, sequence_length)可选) — 存在于位置嵌入中的每个输入序列 token 的位置索引。选择题号的范围在 [0, config.max_position_embeddings - 1] 内。

    什么是 position IDs?

  • head_masktorch.FloatTensor 形状为 (num_heads,)(num_layers, num_heads)可选) — 用于使标头被取消选择的自我注意力模块的掩码。选定的掩码值在 [0, 1] 之间:

    • 1 表示头没有 被掩码
    • 0 表示头被 掩码
  • inputs_embedstorch.FloatTensor 形状为 (batch_size, sequence_length, hidden_size)可选) — 可选,你也可直接传入嵌入表示,而不是传入 input_ids。如果你想要比模型内部嵌入查找矩阵有更多的控制权来将 input_ids 索引转换为相关向量,这种方法很有用。
  • output_attentionsbool可选) — 是否返回所有注意力层的注意力张量。有关详细信息,请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回的张力下的 hidden_states
  • return_dict (bool, 可选) — 是否返回ModelOutput而不是普通元组。
  • labels (torch.LongTensor的形状为 (batch_size,)可选) — 用于计算序列分类/回归损失的标签。索引应在[0, ..., config.num_labels - 1]范围内。如果config.num_labels == 1,将计算回归损失(均方损失),如果config.num_labels > 1,将计算分类损失(交叉熵)。

XmodForSequenceClassification的前向方法重写了__call__特殊方法。

虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module 实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。

XmodForMultipleChoice

transformers.XmodForMultipleChoice

< >

( config )

参数

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

顶部带有多个选择的分类头(在池化输出之上的一层线性层和softmax)的X-MOD模型,例如用于RocStories/SWAG任务。

此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。

前向传递

< >

( input_ids: Optional = None lang_ids: Optional = None token_type_ids: Optional = None attention_mask: Optional = None labels: Optional = None 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 )

参数

  • input_ids (torch.LongTensor of shape (batch_size, num_choices, sequence_length)) — 输入序列令牌在词汇表中的索引。

    索引可以通过使用 AutoTokenizer 获取。详情请参阅 PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入ID?

  • lang_ids (torch.LongTensor 形状为 (batch_size, num_choices, sequence_length)可选) — 分别为每个样本应激活的语言适配器的索引。默认值:对应 self.config.default_language 的索引。
  • attention_mask (torch.FloatTensor 形状为 (batch_size, num_choices, sequence_length)可选) — 用于防止在填充词索引上执行注意力运算的掩码。掩码值选取范围为 [0, 1]
    • 1 表示 未掩码 的令牌;
    • 0 表示 掩码 的令牌。

    什么是注意力掩码?

  • token_type_ids (torch.LongTensor 形状为 (batch_size, num_choices, sequence_length)可选) — 段落词索引,用于指示输入的第一部分和第二部分。索引范围选取为 [0, 1]
    • 0 对应于 句子 A 令牌;
    • 1 对应于 句子 B 令牌。

    什么是词类型 ID?

  • position_ids (形状为 (batch_size, num_choices, sequence_length)torch.LongTensor可选) — 每个输入序列标记在位置嵌入中的位置索引。在 [0, config.max_position_embeddings - 1] 的范围内选择。

    什么是位置 ID?

  • head_mask (形状为 (num_heads,)(num_layers, num_heads)torch.FloatTensor可选) — 用于取消选择自注意力模块中选定头部的掩码。掩码值在 [0, 1] 中选择:

    • 1 表示头部 未被掩码
    • 0 表示头部被 掩码
  • inputs_embeds (形状为 (batch_size, num_choices, sequence_length, hidden_size)torch.FloatTensor可选) — 可选地,你可以直接传递嵌入表示,而不是传递 input_ids。当你想比模型内部的嵌入查找矩阵有更多控制权时,这很有用,将 input_ids 索引转换为相关向量。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。详细信息请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。详细信息请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回ModelOutput对象而不是普通元组。
  • labels (torch.LongTensor 的形状为 (batch_size,)可选) — 计算多选题分类损失的标签。索引应在 [0, ..., num_choices-1] 范围内,其中 num_choices 是输入张量第二个维度的尺寸。(参见上面的 input_ids

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

虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module 实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。

XmodForTokenClassification

transformers.XmodForTokenClassification

< >

( config )

参数

  • config (XmodConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载模型相关的权重,只有配置。请检查from_pretrained()方法来加载模型权重。

在顶部带有标记分类掩头(隐藏状态 output 上面的一个线性层)的 X-MOD 模型,例如用于命名实体识别 (NER) 任务。

此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。

前向传递

< >

( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None labels: 可选 = None output_attentions: 可选 = None output_hidden_states: 可选 = None return_dict: 可选 = None )

参数

  • input_ids (torch.LongTensor 形状 (batch_size, sequence_length)) — 输入序列标记在词汇表中的索引。

    可以通过使用AutoTokenizer获取索引。有关详细信息,请参阅PreTrainedTokenizer.encode()PreTrainedTokenizer.call()

    什么是输入 ID?

  • lang_ids (torch.LongTensor 的形状为 (batch_size, sequence_length)可选) — 应为每个样本激活的语言适配器索引。默认:对应于 self.config.default_language 的索引。
  • 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 令牌。

    令牌类型 ID 是什么?

  • position_ids (torch.LongTensor of shape (batch_size, sequence_length), optional) — 每个输入序列标记在位置嵌入中的位置索引。选择在 [0, config.max_position_embeddings - 1] 范围内。

    什么是位置 ID?

  • head_mask (torch.FloatTensor of shape (num_heads,) or (num_layers, num_heads), optional) — 取消选定头部以使自注意力模块失效的掩码。掩码值在 [0, 1] 范围内选择:

    • 1 表示头部未被屏蔽,
    • 0 表示头部被屏蔽。
  • inputs_embeds (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size), optional) — 如果不想传递 input_ids,而是直接传递嵌入表示,则可以选择这样做。这在您想比模型内部嵌入查找矩阵有更多控制权如何将 input_ids 索引转换为关联向量时非常有用。

  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。详细信息请参阅返回张量下的 attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。详细信息请参阅返回张量下的 hidden_states
  • return_dict (bool, 可选) — 是否返回ModelOutput 而不是普通的元组。
  • labelstorch.LongTensor 形状为 (batch_size, sequence_length)可选)——用于计算标记分类损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。

XmodForTokenClassification 的 forward 方法重载了特殊方法 __call__

虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module 实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。

XmodForQuestionAnswering

transformers.XmodForQuestionAnswering

< >

( config )

参数

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

在SQuAD(Span-based question-answering任务)等extractive question-answering任务上具有span分类头的X-MOD模型(在hidden-states输出之上的线性层计算span start logitsspan end logits)。

此模型继承自 PreTrainedModel。请查看父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。

此模型也是 PyTorch torch.nn.Module 的子类。将其用作常规 PyTorch 模块,并根据 PyTorch 文档查阅有关通用使用和行为的所有内容。

前向传递

< >

( input_ids: 可选 = None lang_ids: 可选 = None attention_mask: 可选 = None token_type_ids: 可选 = None position_ids: 可选 = None head_mask: 可选 = None inputs_embeds: 可选 = None start_positions: 可选 = None end_positions: 可选 = None output_attentions: 可选 = None : 可选 = None : 可选 = None )

参数

  • input_ids (torch.LongTensor 形状为 (batch_size, sequence_length)) — 输入序列_TOKEN的词库索引。

    索引可以通过使用 AutoTokenizer 获取。有关详细信息,请参阅 PreTrainedTokenizer.encode() 以及 PreTrainedTokenizer.call()

    什么是输入ID?

  • lang_ids (torch.LongTensor 形状为 (batch_size, sequence_length),可选项) — 每个样本应激活的语言适配器的索引。默认:对应 self.config.default_language 的索引。
  • 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 标记。

    什么是标记类型 ID?

  • position_ids (可选的 torch.LongTensor,形状为 (batch_size, sequence_length)) — 每个输入序列标记在位置嵌入中的位置索引。在范围 [0, config.max_position_embeddings - 1] 中选择。

    什么是位置ID?

  • head_mask (可选的 torch.FloatTensor 形状为 (num_heads,)(num_layers, num_heads)) — 用于禁用自注意力模块中选定头的掩码。掩码值选择在 [0, 1]

    • 1 表示头未被掩码 hóa;
    • 0 表示头被掩码 hóa。
  • inputs_embeds (可选的 torch.FloatTensor 形状为 (batch_size, sequence_length, hidden_size)) — 可以选择直接传递嵌入表示,而不是传递 input_ids。这在需要比模型内部嵌入查找矩阵有更多控制权的情况下很有用,即如何将 input_ids 索引转换为相关向量。

  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。关于返回的张量中的更多信息,请参阅 attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关返回的张量中的更多信息,请参阅 hidden_states
  • return_dict (bool, optional) — 是否返回一个 ModelOutput 而不是纯元组。
  • XmodForQuestionAnswering 前向方法,重写了特殊方法 __call__

    虽然前向传递的食谱需要在函数内部定义,但应该在调用 Module 实例后调用它,而不是这个,因为前者负责执行预处理和后处理步骤,而后者则无声地忽略它们。

< > 更新到GitHub