Transformers 文件

資料整理器

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

資料整理器

資料整理器是使用資料集元素列表作為輸入來形成批次的物件。這些元素的型別與 `train_dataset` 或 `eval_dataset` 的元素型別相同。

為了能夠構建批次,資料整理器可能會應用一些處理(例如填充)。其中一些(例如 DataCollatorForLanguageModeling)還會對形成的批次應用一些隨機資料增強(例如隨機掩碼)。

使用示例可在示例指令碼示例筆記本中找到。

預設資料整理器

transformers.default_data_collator

< >

( features: list return_tensors = 'pt' )

一個非常簡單的資料整理器,它只是將字典式物件批次整理在一起,並對潛在的鍵進行特殊處理,這些鍵名為

  • `label`: 處理每個物件的一個值(整數或浮點數)
  • `label_ids`: 處理每個物件的值列表

不執行任何額外的預處理:輸入物件的屬性名稱將用作模型相應的輸入。請參閱 glue 和 ner 以瞭解其用途。

DefaultDataCollator

class transformers.DefaultDataCollator

< >

( return_tensors: str = 'pt' )

引數

  • return_tensors (`str`,可選,預設為`"pt"`) — 返回的張量型別。允許的值為“np”、“pt”和“tf”。

一個非常簡單的資料整理器,它只是將字典式物件批次整理在一起,並對潛在的鍵進行特殊處理,這些鍵名為

  • `label`: 處理每個物件的一個值(整數或浮點數)
  • `label_ids`: 處理每個物件的值列表

不執行任何額外的預處理:輸入物件的屬性名稱將用作模型相應的輸入。請參閱 glue 和 ner 以瞭解其用途。

這是一個物件(像其他資料整理器一樣),而不是像 `default_data_collator` 那樣的純函式。如果您需要在初始化時設定 `return_tensors` 值,這會很有幫助。

DataCollatorWithPadding

class transformers.DataCollatorWithPadding

< >

( tokenizer: PreTrainedTokenizerBase padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = True max_length: typing.Optional[int] = None pad_to_multiple_of: typing.Optional[int] = None return_tensors: str = 'pt' )

引數

  • tokenizer (PreTrainedTokenizerPreTrainedTokenizerFast) — 用於編碼資料的分詞器。
  • padding (`bool`,`str` 或 PaddingStrategy可選,預設為 `True`) — 選擇一種策略來填充返回的序列(根據模型的填充側和填充索引),包括:

    • `True` 或 `'longest'`(預設):填充到批次中最長的序列(如果只提供一個序列,則不填充)。
    • `'max_length'`:填充到由引數 `max_length` 指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。
    • `False` 或 `'do_not_pad'`:不填充(即可以輸出包含不同長度序列的批次)。
  • max_length (`int`,可選) — 返回列表的最大長度和可選的填充長度(見上文)。
  • pad_to_multiple_of (`int`,可選) — 如果設定,將把序列填充到所提供值的倍數。

    這對於在計算能力 >= 7.0 (Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 特別有用。

  • return_tensors (`str`,可選,預設為 `"pt"`) — 返回的張量型別。允許的值為“np”、“pt”和“tf”。

將動態填充接收到的輸入的資料整理器。

DataCollatorForTokenClassification

class transformers.DataCollatorForTokenClassification

< >

( tokenizer: PreTrainedTokenizerBase padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = True max_length: typing.Optional[int] = None pad_to_multiple_of: typing.Optional[int] = None label_pad_token_id: int = -100 return_tensors: str = 'pt' )

引數

  • tokenizer (PreTrainedTokenizerPreTrainedTokenizerFast) — 用於編碼資料的分詞器。
  • padding (`bool`,`str` 或 PaddingStrategy可選,預設為 `True`) — 選擇一種策略來填充返回的序列(根據模型的填充側和填充索引),包括:

    • `True` 或 `'longest'`(預設):填充到批次中最長的序列(如果只提供一個序列,則不填充)。
    • `'max_length'`:填充到由引數 `max_length` 指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。
    • `False` 或 `'do_not_pad'`:不填充(即可以輸出包含不同長度序列的批次)。
  • max_length (`int`,可選) — 返回列表的最大長度和可選的填充長度(見上文)。
  • pad_to_multiple_of (`int`,可選) — 如果設定,將把序列填充到所提供值的倍數。

    這對於在計算能力 >= 7.0 (Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 特別有用。

  • label_pad_token_id (`int`,可選,預設為 -100) — 填充標籤時使用的 ID(-100 將被 PyTorch 損失函式自動忽略)。
  • return_tensors (`str`,可選,預設為 `"pt"`) — 返回的張量型別。允許的值為“np”、“pt”和“tf”。

將動態填充接收到的輸入和標籤的資料整理器。

DataCollatorForSeq2Seq

class transformers.DataCollatorForSeq2Seq

< >

( tokenizer: PreTrainedTokenizerBase model: typing.Optional[typing.Any] = None padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = True max_length: typing.Optional[int] = None pad_to_multiple_of: typing.Optional[int] = None label_pad_token_id: int = -100 return_tensors: str = 'pt' )

引數

  • tokenizer (PreTrainedTokenizerPreTrainedTokenizerFast) — 用於編碼資料的分詞器。
  • model (PreTrainedModel可選) — 正在訓練的模型。如果設定並具有 prepare_decoder_input_ids_from_labels,則使用它來準備 decoder_input_ids

    這在使用 label_smoothing 時很有用,可以避免重複計算損失。

  • padding (`bool`,`str` 或 PaddingStrategy可選,預設為 `True`) — 選擇一種策略來填充返回的序列(根據模型的填充側和填充索引),包括:

    • `True` 或 `'longest'`(預設):填充到批次中最長的序列(如果只提供一個序列,則不填充)。
    • `'max_length'`:填充到由引數 `max_length` 指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。
    • `False` 或 `'do_not_pad'`:不填充(即可以輸出包含不同長度序列的批次)。
  • max_length (`int`,可選) — 返回列表的最大長度和可選的填充長度(見上文)。
  • pad_to_multiple_of (`int`,可選) — 如果設定,將把序列填充到所提供值的倍數。

    這對於在計算能力 >= 7.0 (Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 特別有用。

  • label_pad_token_id (`int`,可選,預設為 -100) — 填充標籤時使用的 ID(-100 將被 PyTorch 損失函式自動忽略)。
  • return_tensors (`str`,可選,預設為 `"pt"`) — 返回的張量型別。允許的值為“np”、“pt”和“tf”。

將動態填充接收到的輸入和標籤的資料整理器。

DataCollatorForLanguageModeling

class transformers.DataCollatorForLanguageModeling

< >

( tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: typing.Optional[float] = 0.15 mask_replace_prob: float = 0.8 random_replace_prob: float = 0.1 pad_to_multiple_of: typing.Optional[int] = None tf_experimental_compile: bool = False return_tensors: str = 'pt' seed: typing.Optional[int] = None )

引數

  • tokenizer (PreTrainedTokenizerPreTrainedTokenizerFast) — 用於編碼資料的分詞器。
  • mlm (`bool`,可選,預設為 `True`) — 是否使用掩碼語言建模。如果設定為 `False`,則標籤與輸入相同,並忽略填充標記(透過將它們設定為 -100)。否則,非掩碼標記的標籤為 -100,掩碼標記的值為要預測的值。
  • mlm_probability (`float`,可選,預設為 0.15) — 當 `mlm` 設定為 `True` 時,用於(隨機)掩碼輸入中標記的機率。
  • mask_replace_prob (`float`,可選,預設為 0.8) — 掩碼標記被分詞器的掩碼標記(例如 `[MASK]`)替換的機率。預設為 0.8,表示 80% 的掩碼標記將被 `[MASK]` 替換。僅當 `mlm` 設定為 `True` 時有效。
  • random_replace_prob (`float`,可選,預設為 0.1) — 掩碼標記被分詞器詞彙表中隨機標記替換的機率。預設為 0.1,表示 10% 的掩碼標記將被隨機標記替換。剩餘的掩碼標記(1 - mask_replace_prob - random_replace_prob)保持不變。僅當 `mlm` 設定為 `True` 時有效。
  • pad_to_multiple_of (`int`,可選) — 如果設定,將把序列填充到所提供值的倍數。
  • return_tensors (`str`) — 返回的張量型別。允許的值為“np”、“pt”和“tf”。
  • seed (`int`,可選) — 用於掩碼的隨機數生成器的種子。如果未提供,將使用全域性 RNG。

用於語言建模的資料整理器。如果輸入不都具有相同的長度,它們將被動態填充到批次的最大長度。

為了獲得最佳效能,此資料整理器應與資料集一起使用,該資料集的專案為字典或 BatchEncoding,並帶有 `special_tokens_mask` 鍵,如 PreTrainedTokenizerPreTrainedTokenizerFast 使用引數 `return_special_tokens_mask=True` 返回的那樣。

<示例選項和預期>
  1. 預設行為

    • `mask_replace_prob=0.8`,`random_replace_prob=0.1`。
    • 預期 80% 的掩碼標記被 `[MASK]` 替換,10% 被隨機標記替換,10% 保持不變。
  2. 所有掩碼標記都被 `[MASK]` 替換

    • `mask_replace_prob=1.0`,`random_replace_prob=0.0`。
    • 預期所有掩碼標記都被 `[MASK]` 替換。沒有標記保持不變或被隨機標記替換。
  3. 無 `[MASK]` 替換,僅隨機標記

    • `mask_replace_prob=0.0`,`random_replace_prob=1.0`。
    • 預期所有掩碼標記都被隨機標記替換。無 `[MASK]` 替換或不變的標記。
  4. 均衡替換

    • `mask_replace_prob=0.5`,`random_replace_prob=0.4`。
    • 預期 50% 的掩碼標記被 `[MASK]` 替換,40% 被隨機標記替換,10% 保持不變。

注意:`mask_replace_prob` 和 `random_replace_prob` 的總和不得超過 1。如果它們的總和小於 1,則剩餘的比例將由保持不變的掩碼標記組成。

numpy_mask_tokens

< >

( inputs: typing.Any special_tokens_mask: typing.Optional[typing.Any] = None )

為掩碼語言建模準備掩碼標記輸入/標籤:80% MASK,10% 隨機,10% 原始。

tf_mask_tokens

< >

( inputs: typing.Any vocab_size mask_token_id special_tokens_mask: typing.Optional[typing.Any] = None )

為掩碼語言建模準備掩碼標記輸入/標籤:80% MASK,10% 隨機,10% 原始。

torch_mask_tokens

< >

( inputs: typing.Any special_tokens_mask: typing.Optional[typing.Any] = None )

為掩碼語言建模準備掩碼標記輸入/標籤:80% MASK,10% 隨機,10% 原始。

DataCollatorForWholeWordMask

class transformers.DataCollatorForWholeWordMask

< >

( tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: typing.Optional[float] = 0.15 mask_replace_prob: float = 0.8 random_replace_prob: float = 0.1 pad_to_multiple_of: typing.Optional[int] = None tf_experimental_compile: bool = False return_tensors: str = 'pt' seed: typing.Optional[int] = None )

用於掩碼整個單詞的語言建模的資料整理器。

  • 整理張量批次,尊重其分詞器的 `pad_token`
  • 為掩碼語言建模預處理批次

此整理器依賴於 BertTokenizer 的子詞分詞實現細節,特別是子詞標記以 `##` 為字首。對於不遵循此方案的分詞器,此整理器將生成大致相當於 `DataCollatorForLanguageModeling` 的輸出。

numpy_mask_tokens

< >

( inputs: typing.Any mask_labels: typing.Any )

為掩碼語言建模準備掩碼標記輸入/標籤:80% MASK,10% 隨機,10% 原始。設定“mask_labels”意味著我們使用全詞掩碼 (wwm),我們根據其引用直接掩碼索引。

tf_mask_tokens

< >

( inputs: typing.Any mask_labels: typing.Any )

為掩碼語言建模準備掩碼標記輸入/標籤:80% MASK,10% 隨機,10% 原始。設定“mask_labels”意味著我們使用全詞掩碼 (wwm),我們根據其引用直接掩碼索引。

torch_mask_tokens

< >

( inputs: typing.Any mask_labels: typing.Any )

為掩碼語言建模準備掩碼標記輸入/標籤:80% MASK,10% 隨機,10% 原始。設定“mask_labels”意味著我們使用全詞掩碼 (wwm),我們根據其引用直接掩碼索引。

DataCollatorForPermutationLanguageModeling

class transformers.DataCollatorForPermutationLanguageModeling

< >

( tokenizer: PreTrainedTokenizerBase plm_probability: float = 0.16666666666666666 max_span_length: int = 5 return_tensors: str = 'pt' )

用於排列語言建模的資料收集器。

  • 整理張量批次,尊重其分詞器的 `pad_token`
  • 使用 XLNet 特定的程式對排列語言建模的批次進行預處理

numpy_mask_tokens

< >

( inputs: typing.Any )

用於特定序列的待預測掩碼標記由以下演算法確定

  1. 從序列的開頭開始,設定 cur_len = 0(已處理的標記數)。
  2. 從區間 [1, max_span_length] 中取樣一個 span_length(要掩碼的標記跨度長度)
  3. 保留長度為 context_length = span_length / plm_probability 的上下文,以包圍要掩碼的跨度
  4. 從區間 [cur_len, cur_len + context_length - span_length] 中取樣一個起始點 start_index,並掩碼標記 start_index:start_index + span_length
  5. 設定 cur_len = cur_len + context_length。如果 cur_len < max_len(即序列中還有未處理的標記),則從步驟 1 重複。

tf_mask_tokens

< >

( inputs: typing.Any )

用於特定序列的待預測掩碼標記由以下演算法確定

  1. 從序列的開頭開始,設定 cur_len = 0(已處理的標記數)。
  2. 從區間 [1, max_span_length] 中取樣一個 span_length(要掩碼的標記跨度長度)
  3. 保留長度為 context_length = span_length / plm_probability 的上下文,以包圍要掩碼的跨度
  4. 從區間 [cur_len, cur_len + context_length - span_length] 中取樣一個起始點 start_index,並掩碼標記 start_index:start_index + span_length
  5. 設定 cur_len = cur_len + context_length。如果 cur_len < max_len(即序列中還有未處理的標記),則從步驟 1 重複。

torch_mask_tokens

< >

( inputs: typing.Any )

用於特定序列的待預測掩碼標記由以下演算法確定

  1. 從序列的開頭開始,設定 cur_len = 0(已處理的標記數)。
  2. 從區間 [1, max_span_length] 中取樣一個 span_length(要掩碼的標記跨度長度)
  3. 保留長度為 context_length = span_length / plm_probability 的上下文,以包圍要掩碼的跨度
  4. 從區間 [cur_len, cur_len + context_length - span_length] 中取樣一個起始點 start_index,並掩碼標記 start_index:start_index + span_length
  5. 設定 cur_len = cur_len + context_length。如果 cur_len < max_len(即序列中還有未處理的標記),則從步驟 1 重複。

DataCollatorWithFlattening

class transformers.DataCollatorWithFlattening

< >

( *args return_position_ids = True separator_id = -100 return_flash_attn_kwargs = False return_seq_idx = False **kwargs )

用於無填充方法的資料收集器。執行以下操作:

  • 將整個小批次連線成形狀為 [1, total_tokens] 的單個長序列
  • 使用 separator_id 在連線的 labels 中分隔序列,預設值為 -100
  • 不新增填充,預設返回 input_idslabelsposition_ids
  • 可選地返回 FlashAttentionKwargs 中包含的 kwargs
  • 可選地返回表示每個標記所屬序列的 seq_idx

使用 DataCollatorWithFlattening 會將整個小批次展平為單個長序列。請確保您的注意力計算能夠處理它!

DataCollatorForMultipleChoice

class transformers.DataCollatorForMultipleChoice

< >

( tokenizer: PreTrainedTokenizerBase padding: typing.Union[bool, str, transformers.utils.generic.PaddingStrategy] = True max_length: typing.Optional[int] = None pad_to_multiple_of: typing.Optional[int] = None return_tensors: str = 'pt' )

引數

  • tokenizer (PreTrainedTokenizerPreTrainedTokenizerFast) — 用於編碼資料的分詞器。
  • padding (bool, strPaddingStrategy, 可選, 預設為 True) — 根據模型的填充側和填充索引選擇填充返回序列的策略,包括:

    • True'longest':填充到批次中最長的序列(如果只提供一個序列,則不填充)。
    • 'max_length':填充到由引數 max_length 指定的最大長度,如果未提供該引數,則填充到模型可接受的最大輸入長度。
    • False'do_not_pad'(預設):不填充(即,可以輸出包含不同長度序列的批次)。
  • max_length (int, 可選) — 返回列表的最大長度和可選的填充長度(見上文)。
  • pad_to_multiple_of (int, 可選) — 將序列填充到提供值的倍數。

    這對於在計算能力 >= 7.5 (Volta) 的 NVIDIA 硬體上啟用 Tensor Cores 的使用特別有用。

  • return_tensors (str, 可選, 預設為 "pt") — 要返回的 Tensor 型別。允許的值為“np”、“pt”和“tf”。

用於多項選擇的動態填充巢狀示例批次的資料收集器,以便所有示例的所有選擇都具有相同的長度。

< > 在 GitHub 上更新

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