Transformers 文件

自定義層和實用程式

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

自定義層和實用程式

此頁面列出了庫中使用的所有自定義層,以及它為建模提供的實用函式和類。

這些大部分只有在您研究庫中的模型程式碼時才有用。

class transformers.GradientCheckpointingLayer

< >

( *args **kwargs )

帶梯度檢查點的層基類。

此類為層啟用梯度檢查點功能。預設情況下,梯度檢查點功能是停用的 (gradient_checkpointing = False)。當呼叫 model.set_gradient_checkpointing() 時,透過設定 gradient_checkpointing = True 並將檢查點函式分配給 _gradient_checkpointing_func 來啟用梯度檢查點功能。

重要提示

當使用 `use_reentrant=True` 的梯度檢查點時,需要梯度的輸入(例如隱藏狀態)必須作為位置引數(`*args`)而不是關鍵字引數傳遞,以正確傳播梯度。

示例

>>> # Correct - hidden_states passed as positional arg
>>> out = self.layer(hidden_states, attention_mask=attention_mask)

>>> # Incorrect - hidden_states passed as keyword arg
>>> out = self.layer(hidden_states=hidden_states, attention_mask=attention_mask)

注意力函式

class transformers.AttentionInterface

< >

( )

字典式物件,用於跟蹤允許的注意力函式。您可以透過呼叫 `register()` 輕鬆新增新的注意力函式。如果模型需要本地覆蓋現有的注意力函式(例如 `sdpa`),它需要在 `modeling_.py` 中宣告此類的新例項,並在該例項上宣告它。

註冊

< >

( key: str value: typing.Callable )

注意力掩碼函式

class transformers.AttentionMaskInterface

< >

( )

註冊

< >

( key: str value: typing.Callable )

旋轉位置嵌入函式

transformers.dynamic_rope_update

< >

( rope_forward )

引數

  • rope_forward (可呼叫) — RoPE 實現的前向傳播。

如果模型使用動態 RoPE(即在前向傳播中可能重新計算其頻率的 RoPE 實現),則用於在前向傳播中更新 RoPE 引數的裝飾器函式。

PyTorch 自定義模組

class transformers.Conv1D

< >

( nf nx )

引數

  • nf (int) — 輸出特徵的數量。
  • nx (int) — 輸入特徵的數量。

由 Radford 等人定義的用於 OpenAI GPT(也用於 GPT-2)的 1D 卷積層。

基本功能與線性層相同,但權重是轉置的。

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_fn` 在 `chunk_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: nn.Linear | Conv1D index: torch.LongTensor dim: int | None = 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 自定義層

class 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)的 1D 卷積層。

基本功能與線性層相同,但權重是轉置的。

class 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 損失函式

class transformers.modeling_tf_utils.TFCausalLanguageModelingLoss

< >

( )

適用於因果語言建模 (CLM) 的損失函式,即猜測下一個詞元(token)的任務。

在損失計算中,任何值為 -100 的標籤都將被忽略(連同相應的 logits)。

class transformers.modeling_tf_utils.TFMaskedLanguageModelingLoss

< >

( )

適用於掩碼語言建模 (MLM) 的損失函式,即猜測被掩碼詞元的任務。

在損失計算中,任何值為 -100 的標籤都將被忽略(連同相應的 logits)。

class transformers.modeling_tf_utils.TFMultipleChoiceLoss

< >

( )

適用於多項選擇任務的損失函式。

class transformers.modeling_tf_utils.TFQuestionAnsweringLoss

< >

( )

適用於問答任務的損失函式。

class transformers.modeling_tf_utils.TFSequenceClassificationLoss

< >

( )

適用於序列分類的損失函式。

class 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. get_config 中(由 Keras 在序列化時呼叫)向 Keras 配置字典新增一個 transformers_config 字典。
  2. 包裝 __init__ 以接受該 transformers_config 字典(由 Keras 在反序列化時傳遞),並將其轉換為用於實際層初始化器的配置物件。
  3. 在 Keras 中將該類註冊為自定義物件(如果 Tensorflow 版本支援此功能),因此在呼叫 keras.models.load_model 時不需要在 custom_objects 中提供它。

transformers.shape_list

< >

( tensor: typing.Union[tensorflow.python.framework.tensor.Tensor, numpy.ndarray] ) list[int]

引數

  • tensor (tf.Tensornp.ndarray) — 我們想要獲取形狀的張量。

返回

list[int]

張量的形狀作為列表。

乾淨地處理 TensorFlow 中的動態形狀。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.