Transformers 文档

数据整理器

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

数据整理器

数据整理器是通过使用数据集元素列表作为输入来形成批次的物体。这些元素与 `train_dataset` 或 `eval_dataset` 中的元素类型相同。

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

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

默认数据整理器

transformers.default_data_collator

< >

( features: List return_tensors = 'pt' )

一个非常简单的 数据整理器,它简单地整理批次类似字典的对象,并对可能名为的键执行特殊处理

  • label: 处理每个对象的单个值(整数或浮点数)
  • label_ids: 处理每个对象的 value 列表

不做任何额外的预处理:输入对象的属性名将用作模型的相应输入。请参阅 glue 和 ner 以了解它如何有用。

DefaultDataCollator

class transformers.DefaultDataCollator

< >

( return_tensors: str = 'pt' )

参数

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

一个非常简单的 数据整理器,它简单地整理批次类似字典的对象,并对可能名为的键执行特殊处理

  • label: 处理每个对象的单个值(整数或浮点数)
  • label_ids: 处理每个对象的 value 列表

不做任何额外的预处理:输入对象的属性名将用作模型的相应输入。请参阅 glue 和 ner 以了解它如何有用。

这是一个对象(类似于其他数据整理器),而不是像 default_data_collator 这样的纯函数。如果您需要在初始化时设置 return_tensors 值,这将很有帮助。

DataCollatorWithPadding

class transformers.DataCollatorWithPadding

< >

( tokenizer: PreTrainedTokenizerBase padding: Union = True max_length: Optional = None pad_to_multiple_of: Optional = 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 Core 时特别有用。

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

动态填充接收到的输入的数据整理器。

DataCollatorForTokenClassification

class transformers.DataCollatorForTokenClassification

< >

( tokenizer: 预训练分词器 padding: Union = True max_length: 可选 = None pad_to_multiple_of: 可选 = None label_pad_token_id: int = -100 return_tensors: str = 'pt' )

参数

  • tokenizer (预训练分词器预训练快速分词器) — 用于对数据进行编码的分词器。
  • padding (bool, str填充策略, 可选, 默认为 True) — 选择填充返回序列的策略(根据模型的填充侧和填充索引),选项如下:

    • True'longest' (默认):填充到批次中最长的序列(如果只提供一个序列,则不进行填充)。
    • 'max_length':填充到使用参数 max_length 指定的最大长度,或者如果没有提供该参数,则填充到模型可接受的最大输入长度。
    • False'do_not_pad':不填充(即,可以输出具有不同长度序列的批次)。
  • max_length (int, 可选) — 返回列表的最大长度,并可选地填充长度(见上文)。
  • pad_to_multiple_of (int, 可选) — 如果设置,则将序列填充为所提供值的倍数。

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

  • label_pad_token_id (int, 可选, 默认为 -100) — 在填充标签时使用的 ID(-100 会被 PyTorch 损失函数自动忽略)。
  • return_tensors (str, 可选, 默认为 "pt") — 返回的张量类型。允许的值为 “np”, “pt” 和 “tf”。

动态填充接收到的输入和标签的 DataCollator。

DataCollatorForSeq2Seq

class transformers.DataCollatorForSeq2Seq

< >

( tokenizer: PreTrainedTokenizerBase model: Optional = None padding: Union = True max_length: Optional = None pad_to_multiple_of: Optional = 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.5(Volta)的 NVIDIA 硬件上使用张量核心特别有用。

  • label_pad_token_id (int, 可选, 默认为 -100) — 填充标签时使用的 ID(-100 将被 PyTorch 损失函数自动忽略)。

DataCollatorForLanguageModeling

class transformers.DataCollatorForLanguageModeling

< >

( tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: float = 0.15 pad_to_multiple_of: Optional = None tf_experimental_compile: bool = False return_tensors: str = 'pt' )

参数

  • tokenizer (PreTrainedTokenizer or PreTrainedTokenizerFast) — 用于编码数据的分词器。
  • mlm (bool, 可选, 默认为 True) — 是否使用掩码语言建模。 如果设置为 False, 则标签与输入相同,填充标记被忽略(通过将它们设置为 -100)。 否则,标签对于非掩码标记为 -100,对于掩码标记为要预测的值。
  • mlm_probability (float, 可选, 默认为 0.15) — 当 mlm 设置为 True 时,以该概率 (随机地) 掩盖输入中的标记。
  • pad_to_multiple_of (int, 可选) — 如果设置,将把序列填充到提供的值的倍数。
  • return_tensors (str) — 要返回的张量类型。 允许的值为“np”、“pt”和“tf”。

用于语言建模的数据整理器。 如果输入的长度不都相同,则会动态地将它们填充到批次的最大长度。

为了获得最佳性能,此数据整理器应与数据集一起使用,该数据集的项目是字典或 BatchEncoding,带有 "special_tokens_mask" 键,如 PreTrainedTokenizerPreTrainedTokenizerFast 使用参数 return_special_tokens_mask=True 返回。

numpy_mask_tokens

< >

( inputs: Any special_tokens_mask: Optional = None )

为掩码语言建模准备掩码标记输入/标签:80% MASK、10% 随机、10% 原版。

tf_mask_tokens

< >

( inputs: Any vocab_size mask_token_id special_tokens_mask: Optional = None )

为掩码语言建模准备掩码标记输入/标签:80% MASK、10% 随机、10% 原版。

torch_mask_tokens

< >

( inputs: Any special_tokens_mask: Optional = None )

为掩码语言建模准备掩码标记输入/标签:80% MASK、10% 随机、10% 原版。

DataCollatorForWholeWordMask

class transformers.DataCollatorForWholeWordMask

< >

( tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: float = 0.15 pad_to_multiple_of: Optional = None tf_experimental_compile: bool = False return_tensors: str = 'pt' )

用于语言模型的 Data collator,它会屏蔽整个单词。

  • 合并张量批次,并遵守其 tokenizer 的 pad_token
  • 预处理用于屏蔽语言模型的批次

该 collator 依赖于 BertTokenizer 的子词标记化实现的细节,特别是子词标记以 ## 开头。对于不遵循此方案的 tokenizer,此 collator 会产生与 .DataCollatorForLanguageModeling 大致等效的输出。

numpy_mask_tokens

< >

( inputs: Any mask_labels: Any )

准备用于屏蔽语言模型的屏蔽标记输入/标签:80% MASK、10% 随机、10% 原版。设置 ‘mask_labels’ 表示我们使用整个单词掩码(wwm),我们直接根据其 ref 掩码 idxs。

tf_mask_tokens

< >

( inputs: Any mask_labels: Any )

准备用于屏蔽语言模型的屏蔽标记输入/标签:80% MASK、10% 随机、10% 原版。设置 ‘mask_labels’ 表示我们使用整个单词掩码(wwm),我们直接根据其 ref 掩码 idxs。

torch_mask_tokens

< >

( inputs: Any mask_labels: Any )

准备用于屏蔽语言模型的屏蔽标记输入/标签:80% MASK、10% 随机、10% 原版。设置 ‘mask_labels’ 表示我们使用整个单词掩码(wwm),我们直接根据其 ref 掩码 idxs。

DataCollatorForPermutationLanguageModeling

class transformers.DataCollatorForPermutationLanguageModeling

< >

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

用于排列语言模型的 Data collator。

  • 合并张量批次,并遵守其 tokenizer 的 pad_token
  • 预处理用于排列语言模型的批次,使用 XLNet 特定的程序

numpy_mask_tokens

< >

( inputs: 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: 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: 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
< > 在 GitHub 上更新