speechbrain.dataio.iterators 模块
Webdataset 兼容的迭代器
- Authors:
阿库·罗赫 2021
摘要
类:
用于长度的数据类 |
|
Ratio的数据类。 |
函数:
从排序的缓冲区生成批次 |
|
用于dynamic_bucketed_batch的随机枢轴采样器函数 |
|
确定批次中有多少是填充。 |
|
确定批次长度(包括填充) |
参考
- 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:
- 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_pivotsampler_kwargs (dict) – 关键字参数,传递给sampler_fn。
drop_end (bool) – 数据流耗尽后,是否应继续生成批次直到数据缓冲区耗尽,或者是否应丢弃剩余的缓冲区。没有新样本时,最后几个批次可能处理效率不高。 注意:你可以在
.repeat上使用webdatasetIterableDatasets 来确保永远不会耗尽新样本,然后使用speechbrain.dataio.dataloader.LoopedLoader来设置一个名义上的 epoch 长度。
- Yields:
批次