speechbrain.dataio.iterators 模块

Webdataset 兼容的迭代器

作者
  • Aku Rouhe 2021

摘要

LengthItem

长度的数据类

RatioIndex

比例的数据类。

函数

dynamic_bucketed_batch

从排序缓冲区生成批次

indices_around_random_pivot

dynamic_bucketed_batch 的随机中心采样器函数

padding_ratio

确定批次中有多少是填充。

total_length_with_padding

确定批次有多长 (含填充)

参考

class speechbrain.dataio.iterators.LengthItem(length: int, data: Any)[source]

基类:object

长度的数据类

length: int
data: Any
speechbrain.dataio.iterators.total_length_with_padding(lengths)[source]

确定批次有多长 (含填充)

speechbrain.dataio.iterators.padding_ratio(lengths)[source]

确定批次中有多少是填充。

class speechbrain.dataio.iterators.RatioIndex(ratio: float, index: int)[source]

基类:object

比例的数据类。

ratio: float
index: int
speechbrain.dataio.iterators.indices_around_random_pivot(databuffer, target_batch_numel, max_batch_size=None, max_batch_numel=None, max_padding_ratio=0.2, randint_generator=<bound method Random.randint of <random.Random object>>)[source]

dynamic_bucketed_batch 的随机中心采样器函数

在排序缓冲区中围绕随机中心索引创建批次

这适用于假定为排序顺序的数据缓冲区。随机选择一个索引。这开始了一个索引窗口:最初,只包含随机选择的中心索引。索引窗口一次增长一个索引,选择窗口右侧或左侧的索引,选择会使填充比例增加最少的索引,并确保批次不会超过最大批次长度和最大填充比例。

参数:
  • databuffer (list) – LengthItems 的排序列表

  • target_batch_numel (int) – 目标总批次长度(含填充),简单计算为批次大小 * 最长示例的长度。此函数旨在在收集到的长度超过此值时立即返回批次。如果先遇到其他限制,则可能无法满足此目标。

  • max_batch_size (None, int) – 批次中包含的最大示例数,或 None 表示不按示例数限制。

  • max_batch_numel (None, int) – 最大总批次长度(含填充),简单计算为批次大小 * 最长示例的长度。

  • max_padding_ratio (float) – 每个批次最多可以用于填充的比例。

  • randint_generator (generator) – 提供一个生成器以获得可重现的结果。

返回:

indices – 连续索引列表。

返回类型:

list

speechbrain.dataio.iterators.dynamic_bucketed_batch(data, len_key=None, len_fn=<built-in function len>, min_sample_len=None, max_sample_len=None, buffersize=1024, collate_fn=<class 'speechbrain.dataio.batch.PaddedBatch'>, sampler_fn=<function indices_around_random_pivot>, sampler_kwargs={}, drop_end=False)[source]

从排序缓冲区生成批次

此函数维护传入样本的排序缓冲区。可以根据最小/最大长度过滤样本。使用外部采样器为每个批次选择样本,这允许使用不同的动态批处理算法。

参数:
  • data (iterable) – 可迭代的样本源,例如 IterableDataset。

  • len_key (str, None) – 用于在样本字典中获取样本长度的键,如果不需要使用键则为 None。

  • len_fn (callable) – 如果 len_key 不是 None,则使用 sample[len_key] 调用,否则使用 sample。需要返回样本长度作为整数。

  • min_sample_len (int, None) – 丢弃长度小于此值的样本。如果为 None,则不应用最小长度限制。

  • max_sample_len (int, None) – 丢弃长度大于此值的样本。如果为 None,则不应用最大长度限制。

  • buffersize (int) – 内部排序缓冲区的大小。在生成一批样本之前,缓冲区总是被填满。

  • collate_fn (callable) – 使用样本列表调用。这应该返回一个批次。默认情况下,使用 SpeechBrain PaddedBatch 类,它适用于类似字典的样本,并对任何张量进行填充。

  • sampler_fn (callable) – 使用排序后的数据缓冲区调用。需要返回构成下一个批次的索引列表。默认使用 indices_around_random_pivot

  • sampler_kwargs (dict) – 关键字参数,传递给 sampler_fn。

  • drop_end (bool) – 数据流耗尽后,是应该继续生成批次直到数据缓冲区也耗尽,还是应该丢弃缓冲区中剩余的数据。如果没有新样本,最后的批次可能处理效率不高。注意:您可以在 webdataset IterableDatasets 上使用 .repeat 以确保始终有新样本,然后使用 speechbrain.dataio.dataloader.LoopedLoader 设置名义上的 epoch 长度。

生成:

批次