Transformers 文档

自定义层和工具

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

自定义层和工具函数

此页面列出了库使用的所有自定义层,以及它为建模提供的工具函数。

如果您正在研究库中模型的代码,则其中大多数内容才有用。

Pytorch 自定义模块

class transformers.Conv1D

< >

( nf nx )

参数

  • nf (int) — 输出特征的数量。
  • nx (int) — 输入特征的数量。

Radford 等人为 OpenAI GPT 定义的一维卷积层(也用于 GPT-2 中)。

基本上像线性层一样工作,但权重是转置的。

class transformers.modeling_utils.PoolerStartLogits

< >

( config: PretrainedConfig )

参数

  • config (PretrainedConfig) — 模型使用的配置,将用于获取模型的 hidden_size

从序列隐藏状态计算 SQuAD 开始 logits。

forward

< >

( hidden_states: FloatTensor p_mask: Optional = None ) torch.FloatTensor

参数

  • hidden_states (torch.FloatTensor 形状为 (batch_size, seq_len, hidden_size)) — 模型的最终隐藏状态。
  • p_mask (torch.FloatTensor 形状为 (batch_size, seq_len), 可选) — 无效位置的标记掩码,例如查询和特殊符号(PAD、SEP、CLS)。 1.0 表示应屏蔽标记。

返回

torch.FloatTensor

SQuAD 的起始 logits。

transformers.modeling_utils.PoolerEndLogits

< >

( config: PretrainedConfig )

参数

  • config (PretrainedConfig) — 模型使用的配置,将用于获取模型的 hidden_size 和要使用的 layer_norm_eps

从序列隐藏状态计算 SQuAD 结束 logits。

forward

< >

( hidden_states: FloatTensor start_states: Optional = None start_positions: Optional = None p_mask: Optional = None ) torch.FloatTensor

参数

  • hidden_states (torch.FloatTensor 形状为 (batch_size, seq_len, hidden_size)) — 模型的最终隐藏状态。
  • start_states (torch.FloatTensor 形状为 (batch_size, seq_len, hidden_size)可选) — 标注跨度的第一个词元的隐藏状态。
  • start_positions (torch.LongTensor 形状为 (batch_size,)可选) — 标注跨度的第一个词元的位置。
  • p_mask (torch.FloatTensor 形状为 (batch_size, seq_len)可选) — 无效位置词元的掩码,例如查询和特殊符号(PAD、SEP、CLS)。1.0 表示词元应该被掩盖。

返回

torch.FloatTensor

SQuAD 的结束 logits。

start_statesstart_positions 中的一个应该不为 None。如果两者都设置,start_positions 覆盖 start_states

transformers.modeling_utils.PoolerAnswerClass

< >

( config )

参数

  • config (PretrainedConfig) — 模型使用的配置,将用于获取模型的 hidden_size

从分类和起始词元的隐藏状态计算 SQuAD 2.0 答案类别。

forward

< >

( hidden_states: FloatTensor start_states: Optional = None start_positions: Optional = None cls_index: Optional = None ) torch.FloatTensor

参数

  • hidden_states (torch.FloatTensor 形状为 (batch_size, seq_len, hidden_size)) — 模型的最终隐藏状态。
  • start_states (torch.FloatTensor 形状为 (batch_size, seq_len, hidden_size), 可选) — 标注跨度中第一个词元的隐藏状态。
  • start_positions (torch.LongTensor 形状为 (batch_size,), 可选) — 标注跨度中第一个词元的位置。
  • cls_index (torch.LongTensor 形状为 (batch_size,), 可选) — 批次中每个句子中 CLS 词元的位置。如果为 None,则取最后一个词元。

返回

torch.FloatTensor

SQuAD 2.0 答案类。

start_statesstart_positions 中的一个应该不为 None。如果两者都设置,start_positions 覆盖 start_states

transformers.modeling_utils.SquadHeadOutput

< >

( loss: Optional = None start_top_log_probs: Optional = None start_top_index: Optional = None end_top_log_probs: Optional = None end_top_index: Optional = None cls_logits: Optional = None )

参数

  • loss (torch.FloatTensor 形状为 (1,), 可选,如果同时提供 start_positionsend_positions 则返回) — 分类损失,作为起始词元、结束词元(如果提供,则为 is_impossible)分类损失的总和。
  • start_top_log_probs (形状为 (batch_size, config.start_n_top)torch.FloatTensor可选,如果未提供 start_positionsend_positions 则返回)— 前 config.start_n_top 个起始词元可能性的对数概率(beam-search)。
  • start_top_index (形状为 (batch_size, config.start_n_top)torch.LongTensor可选,如果未提供 start_positionsend_positions 则返回)— 前 config.start_n_top 个起始词元可能性的索引(beam-search)。
  • end_top_log_probs (形状为 (batch_size, config.start_n_top * config.end_n_top)torch.FloatTensor可选,如果未提供 start_positionsend_positions 则返回)— 前 config.start_n_top * config.end_n_top 个结束词元可能性的对数概率(beam-search)。
  • end_top_index (形状为 (batch_size, config.start_n_top * config.end_n_top)torch.LongTensor可选,如果未提供 start_positionsend_positions 则返回)— 前 config.start_n_top * config.end_n_top 个结束词元可能性的索引(beam-search)。
  • cls_logits (形状为 (batch_size,)torch.FloatTensor可选,如果未提供 start_positionsend_positions 则返回)— 答案的 is_impossible 标签的对数概率。

使用 SQuADHead 的问答模型输出的基类。

transformers.modeling_utils.SQuADHead

< >

( config )

参数

  • config (PretrainedConfig) — 模型使用的配置,将用于获取模型的 `hidden_size` 和要使用的 `layer_norm_eps`。

受 XLNet 启发的 SQuAD 头。

forward

< >

( hidden_states: FloatTensor start_positions: Optional = None end_positions: Optional = None cls_index: Optional = None is_impossible: Optional = None p_mask: Optional = None return_dict: bool = False ) transformers.modeling_utils.SquadHeadOutput or tuple(torch.FloatTensor)

参数

  • hidden_states (torch.FloatTensor 形状为 (batch_size, seq_len, hidden_size)) — 序列标记上模型的最终隐藏状态。
  • start_positions (torch.LongTensor 形状为 (batch_size,), 可选) — 标记跨度的第一个标记的位置。
  • end_positions (torch.LongTensor 形状为 (batch_size,), 可选) — 标记跨度的最后一个标记的位置。
  • cls_index (torch.LongTensor 形状为 (batch_size,), 可选) — 批处理中每个句子的 CLS 标记的位置。如果为 `None`,则取最后一个标记。
  • is_impossible (torch.LongTensor 形状为 (batch_size,)可选) — 问题在段落中是否有可能的答案。
  • p_mask (torch.FloatTensor 形状为 (batch_size, seq_len)可选) — 无效位置的词元掩码,例如查询词元和特殊符号(PAD、SEP、CLS)。1.0 表示词元应该被掩盖。
  • return_dict (bool, 可选, 默认值 False) — 是否返回 ModelOutput 而不是一个普通的元组。

返回

transformers.modeling_utils.SquadHeadOutputtuple(torch.FloatTensor)

transformers.modeling_utils.SquadHeadOutput 或一个 torch.FloatTensor 元组(如果传递 return_dict=Falseconfig.return_dict=False)包含根据配置 (<class 'transformers.configuration_utils.PretrainedConfig'>) 和输入的不同元素。

  • loss (torch.FloatTensor 形状为 (1,)可选,如果同时提供 start_positionsend_positions 则返回) — 分类损失,为起始词元、结束词元(以及如果提供 is_impossible)分类损失的总和。
  • start_top_log_probs (torch.FloatTensor 形状为 (batch_size, config.start_n_top)可选,如果未提供 start_positionsend_positions 则返回) — 前 config.start_n_top 个起始词元可能性(beam-search)的对数概率。
  • start_top_index (torch.LongTensor 形状为 (batch_size, config.start_n_top)可选,如果未提供 start_positionsend_positions 则返回) — 前 config.start_n_top 个起始词元可能性(beam-search)的索引。
  • end_top_log_probs (torch.FloatTensor 形状为 (batch_size, config.start_n_top * config.end_n_top)可选,如果未提供 start_positionsend_positions 则返回) — 前 config.start_n_top * config.end_n_top 个结束词元可能性(beam-search)的对数概率。
  • end_top_index (torch.LongTensor 形状为 (batch_size, config.start_n_top * config.end_n_top)可选,如果未提供 start_positionsend_positions 则返回) — 前 config.start_n_top * config.end_n_top 个结束词元可能性(beam-search)的索引。
  • cls_logits (torch.FloatTensor 形状为 (batch_size,)可选,如果未提供 start_positionsend_positions 则返回) — 答案的 is_impossible 标签的对数概率。

transformers.modeling_utils.SequenceSummary

< >

( config: PretrainedConfig )

参数

  • config (PretrainedConfig) — 模型使用的配置。模型配置类中的相关参数包括(有关默认值,请参阅模型的实际配置类):

    • summary_type (str) — 用于生成此摘要的方法。可接受的值有:

      • "last" — 取最后一个词元的隐藏状态(如 XLNet)
      • "first" — 取第一个词元的隐藏状态(如 Bert)
      • "mean" — 取所有词元隐藏状态的平均值
      • "cls_index" — 提供分类词元位置的张量(GPT/GPT-2)
      • "attn" — 尚未实现,使用多头注意力
    • summary_use_proj (bool) — 在向量提取后添加投影。

    • summary_proj_to_labels (bool) — 如果为 True,则投影输出到 config.num_labels 个类别(否则输出到 config.hidden_size)。

    • summary_activation (Optional[str]) — 设置为 "tanh" 以向输出添加 tanh 激活函数,其他字符串或 None 将不添加激活函数。

    • summary_first_dropout (float) — 投影和激活之前的可选 dropout 概率。

    • summary_last_dropout (float)— 投影和激活之后的可选 dropout 概率。

计算序列隐藏状态的单个向量摘要。

forward

< >

( hidden_states: FloatTensor cls_index: Optional = None ) torch.FloatTensor

参数

  • hidden_states (torch.FloatTensor 形状为 [batch_size, seq_len, hidden_size]) — 最后一层的隐藏状态。
  • cls_index (torch.LongTensor 形状为 [batch_size][batch_size, ...],其中 … 是 hidden_states 的可选前导维度,可选) — 当 summary_type == "cls_index" 时使用,并将序列的最后一个词元作为分类词元。

返回

torch.FloatTensor

序列隐藏状态的摘要。

计算序列隐藏状态的单个向量摘要。

PyTorch 帮助函数

transformers.apply_chunking_to_forward

< >

( forward_fn: Callable[..., torch.Tensor] chunk_size: int chunk_dim: int *input_tensors ) torch.Tensor

参数

  • forward_fn (Callable[..., torch.Tensor]) — 模型的前向函数。
  • chunk_size (int) — 分块张量的块大小: num_chunks = len(input_tensors[0]) / chunk_size
  • chunk_dim (int) — 应该对 input_tensors 进行分块的维度。
  • input_tensors (Tuple[torch.Tensor]) — 将被分块的 forward_fn 的输入张量

返回

torch.Tensor

如果应用了该函数,则张量的形状与 forward_fn 返回的形状相同`。

此函数将 input_tensors 在维度 chunk_dim 上分块成大小为 chunk_size 的较小输入张量部分。然后,它将层 forward_fn 独立应用于每个块以节省内存。

如果 forward_fnchunk_dim 上是独立的,则此函数将产生与将 forward_fn 直接应用于 input_tensors 相同的结果。

示例

# rename the usual forward() fn to forward_chunk()
def forward_chunk(self, hidden_states):
    hidden_states = self.decoder(hidden_states)
    return hidden_states


# implement a chunked forward function
def forward(self, hidden_states):
    return apply_chunking_to_forward(self.forward_chunk, self.chunk_size_lm_head, self.seq_len_dim, hidden_states)

transformers.pytorch_utils.find_pruneable_heads_and_indices

< >

( heads: List[int] n_heads: int head_size: int already_pruned_heads: Set[int] ) Tuple[Set[int], torch.LongTensor]

参数

  • heads (List[int]) — 要剪枝的头部索引列表。
  • n_heads (int) — 模型中的头部数量。
  • head_size (int) — 每个头的大小。
  • already_pruned_heads (Set[int]) — 一组已经剪枝的头部。

返回

Tuple[Set[int], torch.LongTensor]

一个元组,包含考虑到 already_pruned_heads 后要剪枝的头部索引,以及层权重中要保留的行/列索引。

查找头部及其索引,并考虑到 already_pruned_heads

transformers.prune_layer

< >

( layer: Union[nn.Linear, Conv1D] index: torch.LongTensor dim: Optional[int] = None ) torch.nn.LinearConv1D

参数

  • layer (Union[torch.nn.Linear, Conv1D]) — 要剪枝的层。
  • index (torch.LongTensor) — 要保留在层中的索引。
  • dim (int, 可选) — 要保留索引的维度。

返回

torch.nn.LinearConv1D

修剪后的层作为新层,其 requires_grad=True

修剪 Conv1D 或线性层以仅保留索引中的条目。

用于移除头部。

transformers.pytorch_utils.prune_conv1d_layer

< >

( layer: Conv1D index: torch.LongTensor dim: int = 1 ) Conv1D

参数

  • layer (Conv1D) — 要修剪的层。
  • index (torch.LongTensor) — 要保留在层中的索引。
  • dim (int, 可选, 默认值: 1) — 要保留索引的维度。

返回

Conv1D

修剪后的层作为新层,其 requires_grad=True

修剪 Conv1D 层以仅保留索引中的条目。Conv1D 的工作方式类似于线性层(例如 BERT),但权重是转置的。

用于移除头部。

transformers.pytorch_utils.prune_linear_layer

< >

( layer: nn.Linear index: torch.LongTensor dim: int = 0 ) torch.nn.Linear

参数

  • layer (torch.nn.Linear) — 需要剪枝的层。
  • index (torch.LongTensor) — 要保留在层中的条目的索引。
  • dim (int, 可选, 默认值: 0) — 要保留索引的维度。

返回

torch.nn.Linear

修剪后的层作为新层,其 requires_grad=True

对线性层进行剪枝,仅保留索引中的条目。

用于移除头部。

TensorFlow 自定义层

transformers.modeling_tf_utils.TFConv1D

< >

( nf nx initializer_range = 0.02 **kwargs )

参数

  • nf (int) — 输出特征的数量。
  • nx (int) — 输入特征的数量。
  • initializer_range (float, 可选, 默认值: 0.02) — 用于初始化权重的标准差。
  • kwargs (Dict[str, Any], 可选) — 传递给 keras.layers.Layer__init__ 的附加关键字参数。

Radford 等人为 OpenAI GPT 定义的一维卷积层(也用于 GPT-2 中)。

基本上像线性层一样工作,但权重是转置的。

transformers.TFSequenceSummary

< >

( config: PretrainedConfig initializer_range: float = 0.02 **kwargs )

参数

  • config (PretrainedConfig) — 模型使用的配置。 模型的配置类中的相关参数为(有关其使用的默认值,请参阅模型的实际配置类):

    • summary_type (str) — 用于生成此摘要的方法。 接受的值为:

      • "last" — 取最后一个词元的隐藏状态(如 XLNet)
      • "first" — 取第一个词元的隐藏状态(如 Bert)
      • "mean" — 取所有词元隐藏状态的平均值
      • "cls_index" — 提供分类词元位置的张量(GPT/GPT-2)
      • "attn" — 现在未实现,使用多头注意力
    • summary_use_proj (bool) — 在向量提取后添加投影。

    • summary_proj_to_labels (bool) — 如果为 True,则投影输出到 config.num_labels 个类(否则输出到 config.hidden_size)。

    • summary_activation (Optional[str]) — 设置为 "tanh" 以向输出添加 tanh 激活函数,其他字符串或 None 将不添加激活函数。

    • summary_first_dropout (float) — 投影和激活函数之前的可选 dropout 概率。

    • summary_last_dropout (float)— 投影和激活函数之后的可选 dropout 概率。

  • initializer_range (float, 可选, 默认值为 0.02) — 用于初始化权重的标准差。
  • kwargs (Dict[str, Any], 可选) — 传递给 keras.layers.Layer__init__ 的附加关键字参数。

计算序列隐藏状态的单个向量摘要。

TensorFlow 损失函数

transformers.modeling_tf_utils.TFCausalLanguageModelingLoss

< >

( )

适用于因果语言建模 (CLM) 的损失函数,即猜测下一个词的任务。

任何 -100 的标签(以及相应的 logits)在损失计算中都将被忽略。

transformers.modeling_tf_utils.TFMaskedLanguageModelingLoss

< >

( )

适用于掩码语言建模 (MLM) 的损失函数,即猜测被掩码词的任务。

任何 -100 的标签(以及相应的 logits)在损失计算中都将被忽略。

transformers.modeling_tf_utils.TFMultipleChoiceLoss

< >

( )

适用于多项选择任务的损失函数。

transformers.modeling_tf_utils.TFQuestionAnsweringLoss

< >

( )

适用于问答任务的损失函数。

transformers.modeling_tf_utils.TFSequenceClassificationLoss

< >

( )

适用于序列分类的损失函数。

transformers.modeling_tf_utils.TFTokenClassificationLoss

< >

( )

适用于词分类的损失函数。

任何 -100 的标签(以及相应的 logits)在损失计算中都将被忽略。

TensorFlow 辅助函数

transformers.modeling_tf_utils.get_initializer

< >

( initializer_range: float = 0.02 ) keras.initializers.TruncatedNormal

参数

  • initializer_range (float,默认为 0.02) — 初始化器范围的标准差。

返回

keras.initializers.TruncatedNormal

截断正态初始化器。

使用给定的范围创建 keras.initializers.TruncatedNormal

transformers.modeling_tf_utils.keras_serializable

< >

( )

参数

  • cls (keras.layers.Layers 子类) — 通常是本项目中的 TF.MainLayer 类,通常必须在其初始化器中接受 config 参数。

装饰 Keras 层类以支持 Keras 序列化。

这可以通过以下方式完成

  1. transformers_config 字典添加到 get_config 中的 Keras 配置字典(由 Keras 在序列化时调用)。
  2. 包装 __init__ 以接受 transformers_config 字典(由 Keras 在反序列化时传递),并将其转换为实际层初始化器的配置对象。
  3. 在 Keras 中将该类注册为自定义对象(如果 Tensorflow 版本支持),这样就不需要在调用 keras.models.load_model 时在 custom_objects 中提供它。

transformers.shape_list

< >

( tensor: Union ) List[int]

参数

  • tensor (tf.Tensornp.ndarray) — 我们想要获取形状的张量。

返回

List[int]

张量的形状,以列表形式表示。

干净地处理 Tensorflow 中的动态形状。

< > 在 GitHub 上更新