Transformers 文档

数据整理器

Hugging Face's logo
加入 Hugging Face 社区

并访问增强的文档体验

开始使用

数据整理器

数据整理器是对象,它们将使用数据集元素的列表作为输入来形成批次。这些元素的类型与 train_dataseteval_dataset 的元素类型相同。

为了能够构建批次,数据整理器可能会应用一些处理(如填充)。其中一些(如 DataCollatorForLanguageModeling)还在形成的批次上应用一些随机数据增强(如随机掩码)。

用例示例可以在示例脚本示例笔记本中找到。

默认数据整理器

transformers.default_data_collator

< >

( features: typing.List[transformers.data.data_collator.InputDataClass] 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) — 用于编码数据的 tokenizer。
  • padding (bool, strPaddingStrategy, 可选, 默认为 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) — 用于编码数据的 tokenizer。
  • padding (bool, strPaddingStrategy, 可选, 默认为 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, strPaddingStrategy, 可选, 默认为 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: 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,则标签与输入相同,填充 token 将被忽略(通过将它们设置为 -100)。否则,对于非掩码 token,标签为 -100,对于掩码 token,标签为要预测的值。
  • mlm_probability (float, 可选, 默认为 0.15) — 当 mlm 设置为 True 时,(随机)掩码输入的 token 的概率。
  • mask_replace_prob (float, 可选, 默认为 0.8) — 掩码 token 被分词器的掩码 token(例如,[MASK])替换的概率。默认为 0.8,表示 80% 的掩码 token 将被替换为 [MASK]。仅当 mlm 设置为 True 时才有效。
  • random_replace_prob (float, 可选, 默认为 0.1) — 掩码 token 被分词器词汇表中的随机 token 替换的概率。默认为 0.1,表示 10% 的掩码 token 将被替换为随机 token。剩余的掩码 token(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% 的掩码 token 被替换为 [MASK],10% 被替换为随机 token,10% 保持不变。
  2. 所有掩码 token 都被 [MASK] 替换

    • mask_replace_prob=1.0, random_replace_prob=0.0
    • 预期所有掩码 token 都被替换为 [MASK]。没有 token 保持不变或被替换为随机 token。
  3. 没有 [MASK] 替换,只有随机 token

    • mask_replace_prob=0.0, random_replace_prob=1.0
    • 预期所有掩码 token 都被替换为随机 token。没有 [MASK] 替换或保持不变的 token。
  4. 平衡替换

    • mask_replace_prob=0.5, random_replace_prob=0.4
    • 预期 50% 的掩码 token 被替换为 [MASK],40% 被替换为随机 token,10% 保持不变。

注意:mask_replace_probrandom_replace_prob 的总和不得超过 1。如果它们的总和小于 1,则剩余的比例将由保持不变的掩码 token 组成。

numpy_mask_tokens

< >

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

为掩码语言建模准备掩码 token 输入/标签:80% MASK,10% 随机,10% 原始。

tf_mask_tokens

< >

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

为掩码语言建模准备掩码 token 输入/标签:80% MASK,10% 随机,10% 原始。

torch_mask_tokens

< >

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

为掩码语言建模准备掩码 token 输入/标签:80% MASK,10% 随机,10% 原始。

DataCollatorForWholeWordMask

class transformers.DataCollatorForWholeWordMask

< >

( tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: 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的pad_token
  • 为掩码语言建模预处理批次

此数据收集器依赖于 BertTokenizer 的子词分词实现的细节,特别是子词标记以 ## 为前缀。对于不遵守此方案的分词器,此数据收集器将生成与 .DataCollatorForLanguageModeling 大致等效的输出。

numpy_mask_tokens

< >

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

为掩码语言建模准备掩码标记输入/标签:80% MASK,10% 随机,10% 原始。设置 ‘mask_labels’ 意味着我们使用整词掩码 (wwm),我们根据其引用直接屏蔽 idxs。

tf_mask_tokens

< >

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

为掩码语言建模准备掩码标记输入/标签:80% MASK,10% 随机,10% 原始。设置 ‘mask_labels’ 意味着我们使用整词掩码 (wwm),我们根据其引用直接屏蔽 idxs。

torch_mask_tokens

< >

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

为掩码语言建模准备掩码标记输入/标签:80% MASK,10% 随机,10% 原始。设置 ‘mask_labels’ 意味着我们使用整词掩码 (wwm),我们根据其引用直接屏蔽 idxs。

DataCollatorForPermutationLanguageModeling

class transformers.DataCollatorForPermutationLanguageModeling

< >

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

用于排列语言建模的数据收集器。

  • 整理张量批次,遵循其tokenizer的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 **kwargs )

用于无填充方法的数据收集器。执行以下操作

  • 将整个小批量连接成单个长序列 [1, total_tokens]
  • 使用 separator_id 分隔连接的 labels 中的序列,默认值为 -100
  • 不会添加填充,返回 input_idslabelsposition_ids

使用 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) — 用于编码数据的tokenizer。
  • padding (bool, strPaddingStrategy, optional, 默认为 True) — 选择一种策略,根据模型的填充侧和填充索引来填充返回的序列,选项包括:

    • True'longest': 填充到批次中最长的序列(如果仅提供单个序列,则不填充)。
    • 'max_length': 填充到使用参数 max_length 指定的最大长度,如果未提供该参数,则填充到模型可接受的最大输入长度。
    • False'do_not_pad' (默认): 不填充(即,可以输出具有不同长度序列的批次)。
  • max_length (int, optional) — 返回列表的最大长度,以及可选的填充长度(见上文)。
  • pad_to_multiple_of (int, optional) — 将序列填充到提供的值的倍数。

    这对于在计算能力 >= 7.5 (Volta) 的 NVIDIA 硬件上启用 Tensor Cores 的使用特别有用。

  • return_tensors (str, optional, 默认为 "pt") — 要返回的 Tensor 类型。允许的值为 “np”、"pt" 和 “tf”。

动态填充多项选择的嵌套示例批次的数据收集器,以便所有示例的所有选择都具有相同的长度。

< > Update on GitHub