speechbrain.dataio.iterators 模块

Webdataset 兼容的迭代器

Authors:
  • 阿库·罗赫 2021

摘要

类:

LengthItem

用于长度的数据类

RatioIndex

Ratio的数据类。

函数:

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的随机枢轴采样器函数

在排序缓冲区中围绕一个随机枢轴索引创建批次

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

Parameters:
  • 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) – 提供一个生成器以获得可重复的结果。

Returns:

indices – 一系列连续的索引。

Return type:

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]

从排序的缓冲区生成批次

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

Parameters:
  • 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) – 数据流耗尽后,是否应继续生成批次直到数据缓冲区耗尽,或者是否应丢弃剩余的缓冲区。没有新样本时,最后几个批次可能处理效率不高。 注意:你可以在 .repeat 上使用 webdataset IterableDatasets 来确保永远不会耗尽新样本,然后使用 speechbrain.dataio.dataloader.LoopedLoader 来设置一个名义上的 epoch 长度。

Yields:

批次