数据整理器
数据整理器是通过使用数据集元素列表作为输入来形成批次的物体。这些元素与 `train_dataset` 或 `eval_dataset` 中的元素类型相同。
为了能够构建批次,数据整理器可能会应用一些处理(例如填充)。其中一些(例如 DataCollatorForLanguageModeling)还会对形成的批次应用一些随机数据增强(例如随机屏蔽)。
默认数据整理器
一个非常简单的 数据整理器,它简单地整理批次类似字典的对象,并对可能名为的键执行特殊处理
label
: 处理每个对象的单个值(整数或浮点数)label_ids
: 处理每个对象的 value 列表
不做任何额外的预处理:输入对象的属性名将用作模型的相应输入。请参阅 glue 和 ner 以了解它如何有用。
DefaultDataCollator
class transformers.DefaultDataCollator
< source >( return_tensors: str = 'pt' )
一个非常简单的 数据整理器,它简单地整理批次类似字典的对象,并对可能名为的键执行特殊处理
label
: 处理每个对象的单个值(整数或浮点数)label_ids
: 处理每个对象的 value 列表
不做任何额外的预处理:输入对象的属性名将用作模型的相应输入。请参阅 glue 和 ner 以了解它如何有用。
这是一个对象(类似于其他数据整理器),而不是像 default_data_collator 这样的纯函数。如果您需要在初始化时设置 return_tensors 值,这将很有帮助。
DataCollatorWithPadding
class transformers.DataCollatorWithPadding
< source >( tokenizer: PreTrainedTokenizerBase padding: Union = True max_length: Optional = None pad_to_multiple_of: Optional = None return_tensors: str = 'pt' )
参数
- tokenizer (PreTrainedTokenizer 或 PreTrainedTokenizerFast) — 用于对数据进行编码的标记器。
- padding (
bool
,str
或 PaddingStrategy, 可选, 默认值为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 (PreTrainedTokenizer 或 PreTrainedTokenizerFast) — 用于编码数据的分词器。
- 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.5(Volta)的 NVIDIA 硬件上使用张量核心特别有用。
- label_pad_token_id (
int
, 可选, 默认为 -100) — 填充标签时使用的 ID(-100 将被 PyTorch 损失函数自动忽略)。
DataCollatorForLanguageModeling
class transformers.DataCollatorForLanguageModeling
< source >( 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"
键,如 PreTrainedTokenizer 或 PreTrainedTokenizerFast 使用参数 return_special_tokens_mask=True
返回。
为掩码语言建模准备掩码标记输入/标签:80% MASK、10% 随机、10% 原版。
tf_mask_tokens
< source >( inputs: Any vocab_size mask_token_id special_tokens_mask: Optional = None )
为掩码语言建模准备掩码标记输入/标签:80% MASK、10% 随机、10% 原版。
为掩码语言建模准备掩码标记输入/标签:80% MASK、10% 随机、10% 原版。
DataCollatorForWholeWordMask
class transformers.DataCollatorForWholeWordMask
< source >( 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
大致等效的输出。
准备用于屏蔽语言模型的屏蔽标记输入/标签:80% MASK、10% 随机、10% 原版。设置 ‘mask_labels’ 表示我们使用整个单词掩码(wwm),我们直接根据其 ref 掩码 idxs。
准备用于屏蔽语言模型的屏蔽标记输入/标签:80% MASK、10% 随机、10% 原版。设置 ‘mask_labels’ 表示我们使用整个单词掩码(wwm),我们直接根据其 ref 掩码 idxs。
准备用于屏蔽语言模型的屏蔽标记输入/标签:80% MASK、10% 随机、10% 原版。设置 ‘mask_labels’ 表示我们使用整个单词掩码(wwm),我们直接根据其 ref 掩码 idxs。
DataCollatorForPermutationLanguageModeling
class transformers.DataCollatorForPermutationLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBase plm_probability: float = 0.16666666666666666 max_span_length: int = 5 return_tensors: str = 'pt' )
用于排列语言模型的 Data collator。
- 合并张量批次,并遵守其 tokenizer 的 pad_token
- 预处理用于排列语言模型的批次,使用 XLNet 特定的程序
为特定序列预测的掩码标记由以下算法确定:
- 从序列开头开始,设置
cur_len = 0
(到目前为止处理的标记数量)。 - 从区间
[1, max_span_length]
中采样一个span_length
(要掩码的标记跨度的长度) - 保留一个长度为
context_length = span_length / plm_probability
的上下文来围绕要掩码的跨度 - 从区间
[cur_len, cur_len + context_length - span_length]
中采样一个起始点start_index
,并掩码标记start_index:start_index + span_length
- 设置
cur_len = cur_len + context_length
。如果cur_len < max_len
(即序列中还有要处理的标记),则从步骤 1 重复。
为特定序列预测的掩码标记由以下算法确定:
- 从序列开头开始,设置
cur_len = 0
(到目前为止处理的标记数量)。 - 从区间
[1, max_span_length]
中采样一个span_length
(要掩码的标记跨度的长度) - 保留一个长度为
context_length = span_length / plm_probability
的上下文来围绕要掩码的跨度 - 从区间
[cur_len, cur_len + context_length - span_length]
中采样一个起始点start_index
,并掩码标记start_index:start_index + span_length
- 设置
cur_len = cur_len + context_length
。如果cur_len < max_len
(即序列中还有要处理的标记),则从步骤 1 重复。
为特定序列预测的掩码标记由以下算法确定:
- 从序列开头开始,设置
cur_len = 0
(到目前为止处理的标记数量)。 - 从区间
[1, max_span_length]
中采样一个span_length
(要掩码的标记跨度的长度) - 保留一个长度为
context_length = span_length / plm_probability
的上下文来围绕要掩码的跨度 - 从区间
[cur_len, cur_len + context_length - span_length]
中采样一个起始点start_index
,并掩码标记start_index:start_index + span_length
- 设置
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_ids
、labels
和position_ids