数据整理器
数据整理器是通过使用数据集元素列表作为输入来形成批处理的对象。这些元素的类型与train_dataset
或eval_dataset
的元素类型相同。
为了能够构建批次,数据整理器可能会应用一些处理(如填充)。其中一些(如 DataCollatorForLanguageModeling)还会对形成的批次应用一些随机数据增强(如随机掩码)。
默认数据整理器
transformers.default_data_collator
< source >( features: typing.List[transformers.data.data_collator.InputDataClass] return_tensors = 'pt' )
非常简单的数据整理器,它只是将批次的类似字典的对象整理在一起,并对可能命名为以下键的特殊处理:
label
: 处理每个对象的单个值(整数或浮点数)label_ids
: 处理每个对象的值的列表
不进行任何额外的预处理:输入对象的属性名称将用作模型的相应输入。参见glue和ner以了解其有用性的示例。
DefaultDataCollator
类 transformers.DefaultDataCollator
< source >( return_tensors: str = 'pt' )
非常简单的数据整理器,它只是将批次的类似字典的对象整理在一起,并对可能命名为以下键的特殊处理:
label
: 处理每个对象的单个值(整数或浮点数)label_ids
: 处理每个对象的值的列表
不进行任何额外的预处理:输入对象的属性名称将用作模型的相应输入。参见glue和ner以了解其有用性的示例。
这是一个对象(与其他数据整理器类似),而不是像 default_data_collator 那样的纯函数。如果您需要在初始化时设置 return_tensors 值,这可能会很有帮助。
DataCollatorWithPadding
类 transformers.DataCollatorWithPadding
< 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 or PreTrainedTokenizerFast) — 用于编码数据的tokenizer.
- padding (
bool
,str
or PaddingStrategy, optional, defaults toTrue
) — Select a strategy to pad the returned sequences (according to the model’s padding side and padding index) among:True
or'longest'
(default): Pad to the longest sequence in the batch (or no padding if only a single sequence is provided).'max_length'
: Pad to a maximum length specified with the argumentmax_length
or to the maximum acceptable input length for the model if that argument is not provided.False
or'do_not_pad'
: No padding (i.e., can output a batch with sequences of different lengths).
- max_length (
int
, optional) — 返回列表的最大长度以及可选的填充长度(见上文)。 - pad_to_multiple_of (
int
, optional) — If set will pad the sequence to a multiple of the provided value.这对于在计算能力 >= 7.5(Volta)的NVIDIA硬件上启用Tensor Cores特别有用。
- return_tensors (
str
, 可选, 默认为"pt"
) — 返回的张量类型。允许的值为“np”、“pt”和“tf”。
数据整理器,将动态填充接收到的输入。
DataCollatorForTokenClassification
类 transformers.DataCollatorForTokenClassification
< 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 label_pad_token_id: int = -100 return_tensors: str = 'pt' )
参数
- tokenizer (PreTrainedTokenizer or PreTrainedTokenizerFast) — 用于编码数据的tokenizer.
- padding (
bool
,str
or PaddingStrategy, optional, defaults toTrue
) — Select a strategy to pad the returned sequences (according to the model’s padding side and padding index) among:True
or'longest'
(default): Pad to the longest sequence in the batch (or no padding if only a single sequence is provided).'max_length'
: Pad to a maximum length specified with the argumentmax_length
or to the maximum acceptable input length for the model if that argument is not provided.False
or'do_not_pad'
: No padding (i.e., can output a batch with sequences of different lengths).
- max_length (
int
, optional) — 返回列表的最大长度以及可选的填充长度(见上文)。 - pad_to_multiple_of (
int
, optional) — If set will pad the sequence to a multiple of the provided value.这对于在计算能力 >= 7.5(Volta)的NVIDIA硬件上启用Tensor Cores特别有用。
- label_pad_token_id (
int
, optional, 默认为 -100) — 用于填充标签的ID(-100 将被 PyTorch 损失函数自动忽略)。 - return_tensors (
str
, 可选, 默认为"pt"
) — 返回的张量类型。允许的值为“np”、“pt”和“tf”。
数据整理器,将动态填充接收到的输入以及标签。
DataCollatorForSeq2Seq
类 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 or PreTrainedTokenizerFast) — 用于编码数据的tokenizer.
- model (PreTrainedModel, optional) —
The model that is being trained. If set and has the prepare_decoder_input_ids_from_labels, use it to
prepare the decoder_input_ids
这在避免计算两次损失时使用label_smoothing非常有用。
- padding (
bool
,str
or PaddingStrategy, optional, defaults toTrue
) — Select a strategy to pad the returned sequences (according to the model’s padding side and padding index) among:True
or'longest'
(default): Pad to the longest sequence in the batch (or no padding if only a single sequence is provided).'max_length'
: Pad to a maximum length specified with the argumentmax_length
or to the maximum acceptable input length for the model if that argument is not provided.False
or'do_not_pad'
: No padding (i.e., can output a batch with sequences of different lengths).
- max_length (
int
, optional) — 返回列表的最大长度以及可选的填充长度(见上文)。 - pad_to_multiple_of (
int
, optional) — If set will pad the sequence to a multiple of the provided value.这对于在计算能力 >= 7.5(Volta)的NVIDIA硬件上启用Tensor Cores特别有用。
- label_pad_token_id (
int
, optional, defaults to -100) — 用于填充标签的ID(-100将被PyTorch损失函数自动忽略)。 - return_tensors (
str
, 可选, 默认为"pt"
) — 返回的张量类型。允许的值为“np”、“pt”和“tf”。
数据整理器,将动态填充接收到的输入以及标签。
DataCollatorForLanguageModeling
类 transformers.DataCollatorForLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: float = 0.15 pad_to_multiple_of: typing.Optional[int] = None tf_experimental_compile: bool = False return_tensors: str = 'pt' )
参数
- tokenizer (PreTrainedTokenizer or PreTrainedTokenizerFast) — 用于编码数据的tokenizer.
- mlm (
bool
, 可选, 默认为True
) — 是否使用掩码语言建模。如果设置为False
,标签将与输入相同,忽略填充标记(通过将它们设置为-100)。否则,非掩码标记的标签为-100,掩码标记的标签为要预测的值。 - mlm_probability (
float
, optional, defaults to 0.15) — 当mlm
设置为True
时,用于(随机)屏蔽输入中标记的概率。 - pad_to_multiple_of (
int
, optional) — 如果设置,将序列填充到提供的值的倍数。 - return_tensors (
str
) — 返回的张量类型。允许的值为“np”、“pt”和“tf”。
用于语言建模的数据整理器。如果输入的长度不完全相同,则会动态填充到批次的最大长度。
为了获得最佳性能,此数据整理器应与包含字典或BatchEncoding项的数据集一起使用,这些项具有"special_tokens_mask"
键,如PreTrainedTokenizer或PreTrainedTokenizerFast返回的那样,参数为return_special_tokens_mask=True
。
为掩码语言模型准备掩码标记输入/标签:80% 掩码,10% 随机,10% 原始。
tf_mask_tokens
< source >( inputs: typing.Any 词汇量 掩码标记ID 特殊标记掩码: typing.Optional[typing.Any] = None )
为掩码语言模型准备掩码标记输入/标签:80% 掩码,10% 随机,10% 原始。
为掩码语言模型准备掩码标记输入/标签:80% 掩码,10% 随机,10% 原始。
DataCollatorForWholeWordMask
类 transformers.DataCollatorForWholeWordMask
< source >( tokenizer: PreTrainedTokenizerBase mlm: bool = True mlm_probability: float = 0.15 pad_to_multiple_of: typing.Optional[int] = None tf_experimental_compile: bool = False return_tensors: str = 'pt' )
用于语言建模的数据整理器,用于掩盖整个单词。
- 整理一批张量,尊重其分词器的pad_token
- 为掩码语言模型预处理批次
这个校对器依赖于BertTokenizer实现的子词分词细节,特别是子词标记以##为前缀。对于不遵循此方案的标记器,此校对器将产生大致等同于.DataCollatorForLanguageModeling
的输出。
为掩码语言模型准备掩码标记输入/标签:80% 掩码,10% 随机,10% 原始。设置 'mask_labels' 意味着我们使用全词掩码(wwm),我们直接根据其参考掩码索引。
为掩码语言模型准备掩码标记输入/标签:80% 掩码,10% 随机,10% 原始。设置 'mask_labels' 意味着我们使用全词掩码(wwm),我们直接根据其参考掩码索引。
为掩码语言模型准备掩码标记输入/标签:80% 掩码,10% 随机,10% 原始。设置 'mask_labels' 意味着我们使用全词掩码(wwm),我们直接根据其参考掩码索引。
DataCollatorForPermutationLanguageModeling
类 transformers.DataCollatorForPermutationLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBase plm_probability: float = 0.16666666666666666 max_span_length: int = 5 return_tensors: str = 'pt' )
用于排列语言建模的数据整理器。
- 整理一批张量,尊重其分词器的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
类 transformers.DataCollatorWithFlattening
< source >( *args return_position_ids = True separator_id = -100 **kwargs )
用于无填充方法的数据整理器。执行以下操作:
- 将整个小批次连接成一个长的序列 [1, total_tokens]
- 使用
separator_id
来分隔连接后的labels
中的序列,默认值为 -100 - 不会添加填充,返回
input_ids
、labels
和position_ids