Transformers 文档
数据整理器
并访问增强的文档体验
开始使用
数据整理器
数据整理器是对象,它们将使用数据集元素的列表作为输入来形成批次。这些元素的类型与 train_dataset
或 eval_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' )
非常简单的数据整理器,它只是整理类似字典的对象的批次,并对名为以下潜在键执行特殊处理
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 (PreTrainedTokenizer 或 PreTrainedTokenizerFast) — 用于编码数据的 tokenizer。
- 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 (PreTrainedTokenizer 或 PreTrainedTokenizerFast) — 用于编码数据的 tokenizer。
- 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
< source >( 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 (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.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
< source >( 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 (PreTrainedTokenizer 或 PreTrainedTokenizerFast) — 用于编码数据的分词器。
- 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"
键,由 PreTrainedTokenizer 或 PreTrainedTokenizerFast 使用 return_special_tokens_mask=True
参数返回。
默认行为
mask_replace_prob=0.8
,random_replace_prob=0.1
。- 预期 80% 的掩码 token 被替换为
[MASK]
,10% 被替换为随机 token,10% 保持不变。
所有掩码 token 都被
[MASK]
替换mask_replace_prob=1.0
,random_replace_prob=0.0
。- 预期所有掩码 token 都被替换为
[MASK]
。没有 token 保持不变或被替换为随机 token。
没有
[MASK]
替换,只有随机 tokenmask_replace_prob=0.0
,random_replace_prob=1.0
。- 预期所有掩码 token 都被替换为随机 token。没有
[MASK]
替换或保持不变的 token。
平衡替换
mask_replace_prob=0.5
,random_replace_prob=0.4
。- 预期 50% 的掩码 token 被替换为
[MASK]
,40% 被替换为随机 token,10% 保持不变。
注意:mask_replace_prob
和 random_replace_prob
的总和不得超过 1。如果它们的总和小于 1,则剩余的比例将由保持不变的掩码 token 组成。
numpy_mask_tokens
< source >( inputs: typing.Any special_tokens_mask: typing.Optional[typing.Any] = None )
为掩码语言建模准备掩码 token 输入/标签:80% MASK,10% 随机,10% 原始。
tf_mask_tokens
< source >( inputs: typing.Any vocab_size mask_token_id special_tokens_mask: typing.Optional[typing.Any] = None )
为掩码语言建模准备掩码 token 输入/标签:80% MASK,10% 随机,10% 原始。
torch_mask_tokens
< source >( inputs: typing.Any special_tokens_mask: typing.Optional[typing.Any] = None )
为掩码语言建模准备掩码 token 输入/标签:80% MASK,10% 随机,10% 原始。
DataCollatorForWholeWordMask
class transformers.DataCollatorForWholeWordMask
< source >( 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
大致等效的输出。
为掩码语言建模准备掩码标记输入/标签:80% MASK,10% 随机,10% 原始。设置 ‘mask_labels’ 意味着我们使用整词掩码 (wwm),我们根据其引用直接屏蔽 idxs。
为掩码语言建模准备掩码标记输入/标签:80% MASK,10% 随机,10% 原始。设置 ‘mask_labels’ 意味着我们使用整词掩码 (wwm),我们根据其引用直接屏蔽 idxs。
为掩码语言建模准备掩码标记输入/标签:80% MASK,10% 随机,10% 原始。设置 ‘mask_labels’ 意味着我们使用整词掩码 (wwm),我们根据其引用直接屏蔽 idxs。
DataCollatorForPermutationLanguageModeling
class transformers.DataCollatorForPermutationLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBase plm_probability: float = 0.16666666666666666 max_span_length: int = 5 return_tensors: str = 'pt' )
用于排列语言建模的数据收集器。
- 整理张量批次,遵循其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
< source >( *args return_position_ids = True separator_id = -100 **kwargs )
用于无填充方法的数据收集器。执行以下操作
- 将整个小批量连接成单个长序列 [1, total_tokens]
- 使用
separator_id
分隔连接的labels
中的序列,默认值为 -100 - 不会添加填充,返回
input_ids
、labels
和position_ids
使用 DataCollatorWithFlattening
将展平整个小批量成单个长序列。确保您的注意力计算能够处理它!
DataCollatorForMultipleChoice
class transformers.DataCollatorForMultipleChoice
< source >( 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 (PreTrainedTokenizer 或 PreTrainedTokenizerFast) — 用于编码数据的tokenizer。
- padding (
bool
,str
或 PaddingStrategy, 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”。
动态填充多项选择的嵌套示例批次的数据收集器,以便所有示例的所有选择都具有相同的长度。