speechbrain.utils.data_utils 模块
该库收集了用于数据输入输出操作的实用工具。
- Authors
Mirco Ravanelli 2020
阿库·柔赫 2020
萨穆埃莱·科内尔 2020
阿德尔·穆门 2024
皮埃尔·冠军 2023
摘要
函数:
给定一个torch张量列表,它通过在每一维上向右填充来将它们批量处理在一起,以便所有张量具有相同的长度。 |
|
在序列中打乱固定大小的批次 |
|
以向量化的方式将多个填充的特征张量连接成一个单一的填充张量,而不在最终张量中包含填充,仅在末尾添加填充。 |
|
返回给定字典中所有可能的键值组合 |
|
返回指定值字典的排列生成 |
|
返回标准分布统计量(均值、标准差、最小值、最大值) |
|
从给定的源下载文件并将其保存到给定的目标路径。 |
|
返回在文件夹中找到的文件列表。 |
|
从输入的csv文件的选定字段中获取列表。 |
|
创建一个张量,其单维度范围与其张量的形状匹配 |
|
一个计算每个样本最小值的度量函数 |
|
一个计算每个样本均值的指标函数,排除填充值 |
|
一个计算每个样本最小值的度量函数 |
|
一个计算每个样本标准差的指标函数,不包括填充部分 |
|
一个多功能辅助函数,用于将一个张量的形状匹配到另一个张量的形状 - 对于掩码等非常有用。 |
|
从批量值列表中创建张量。 |
|
返回指定张量的所有维度,除了批次维度 |
|
向张量的指定维度添加额外的填充,使其能够被指定的因子整除。 |
|
该函数接受任意形状的torch张量,并通过在右侧追加值将其填充到目标形状。 |
|
生成嵌套字典的每个(键,值)。 |
|
将数据移动到设备或其他类型,并处理容器。 |
|
类似于 |
|
将包含张量的命名元组或字典转换为其标量值 |
|
此函数设置用户对给定文件夹中所有文件的写入权限。 |
|
str.split 的一个非常基础的功能版本 |
|
返回序列中的分割列表。 |
|
将路径拆分为源和文件名 |
|
将指定的张量修剪以匹配另一个张量的形状(最多) |
|
将指定的张量修剪以匹配指定的形状 |
|
根据一批句子及其对应的相对长度生成Python列表。 |
|
将一维张量扩展到指定的维度数,保留一个维度并在其他地方创建“虚拟”维度 |
|
将张量重塑为与目标张量兼容的形状,仅在x.dim() <= y.dim()时有效 |
参考
- speechbrain.utils.data_utils.undo_padding(batch, lengths)[source]
给定一批句子及其对应的相对长度,生成Python列表。
- Parameters:
batch (torch.Tensor) – 一批句子聚集在一个批次中。
lengths (torch.Tensor) – 批次中每个句子的相对长度。
- Returns:
as_list – 对应输入张量的Python列表。
- Return type:
Example
>>> batch=torch.rand([4,100]) >>> lengths=torch.tensor([0.5,0.6,0.7,1.0]) >>> snt_list=undo_padding(batch, lengths) >>> len(snt_list) 4
- speechbrain.utils.data_utils.get_all_files(dirName, match_and=None, match_or=None, exclude_and=None, exclude_or=None)[source]
返回在文件夹中找到的文件列表。
可以使用不同的选项来将搜索限制在某些特定的模式。
- Parameters:
- Returns:
allFiles – 匹配模式的文件列表。
- Return type:
Example
>>> get_all_files('tests/samples/RIRs', match_and=['3.wav']) ['tests/samples/RIRs/rir3.wav']
- speechbrain.utils.data_utils.get_list_from_csv(csvfile, field, delimiter=',', skipinitialspace=True)[source]
从输入的CSV文件的选定字段中获取列表。
- speechbrain.utils.data_utils.split_list(seq, num)[source]
返回序列中的分割列表。
- Parameters:
seq (iterable) – 输入列表,将被分割。
num (int) – 要生成的块的数量。
- Return type:
一个列表的列表,长度为num,包含seq的所有元素。
Example
>>> split_list([1, 2, 3, 4, 5, 6, 7, 8, 9], 4) [[1, 2], [3, 4], [5, 6], [7, 8, 9]]
- speechbrain.utils.data_utils.recursive_items(dictionary)[source]
生成嵌套字典的每个(键,值)。
- Parameters:
字典 (dict) – 要列出的嵌套字典。
- Yields:
(key, value)来自字典的元组。
Example
>>> rec_dict={'lev1': {'lev2': {'lev3': 'current_val'}}} >>> [item for item in recursive_items(rec_dict)] [('lev3', 'current_val')]
- speechbrain.utils.data_utils.recursive_update(d, u, must_match=False)[source]
类似于
dict.update的函数,但用于嵌套的dict。来自: https://stackoverflow.com/a/3233356
如果你有一个嵌套的映射结构,例如:
{“a”: 1, “b”: {“c”: 2}}
假设你想用以下内容更新上述结构:
{“b”: {“d”: 3}}
此函数将产生:
{“a”: 1, “b”: {“c”: 2, “d”: 3}}
而不是:
{“a”: 1, “b”: {“d”: 3}}
Example
>>> d = {'a': 1, 'b': {'c': 2}} >>> recursive_update(d, {'b': {'d': 3}}) >>> d {'a': 1, 'b': {'c': 2, 'd': 3}}
- speechbrain.utils.data_utils.download_file(source, dest, unpack=False, dest_unpack=None, replace_existing=False, write_permissions=False)[source]
从给定的源下载文件并将其保存到给定的目标路径。
参数
网络。
- destpath
目标路径。
- unpackbool
如果为True,它会在目标文件夹中解压数据。 存档将被保留。
支持解压/解压缩的文件格式有:
任何由
shutil.get_archive_formats()枚举的格式,通常包括.tar、.tar.gz、.zip。普通的
.gz文件(当不是.tar归档文件时)
请注意,出于安全原因,您应该始终信任您正在提取的存档。
- dest_unpack: path
存储解压数据集的路径
- replace_existingbool
如果为True,则替换现有文件。
- write_permissions: bool
当设置为True时,dest_unpack目录中的所有文件将被授予写权限。 此选项仅在unpack=True时生效。
- speechbrain.utils.data_utils.set_writing_permissions(folder_path)[source]
此函数将用户写入权限设置为给定文件夹中的所有文件。
- Parameters:
folder_path (folder) – 文件夹中的文件将被授予写权限。
- speechbrain.utils.data_utils.pad_right_to(tensor, target_shape, mode='constant', value=0)[source]
此函数接受任意形状的torch张量,并通过在右侧追加值将其填充到目标形状。
- speechbrain.utils.data_utils.batch_pad_right(tensors: list, mode='constant', value=0)[source]
给定一个torch张量列表,它通过在每一维上向右填充来将它们批量处理在一起,以便所有张量具有相同的长度。
- speechbrain.utils.data_utils.recursive_to(data, *args, **kwargs)[source]
将数据移动到设备或其他类型,并处理容器。
与 torch.utils.data._utils.pin_memory.pin_memory 非常相似, 但应用的是 .to() 方法。
- speechbrain.utils.data_utils.mod_default_collate(batch)[source]
从批量值列表中创建一个张量。
请注意,这不需要将zip(*)值压缩在一起,因为PaddedBatch已经通过键将它们连接起来了。
这里的想法是不要出错。
- speechbrain.utils.data_utils.split_path(path)[source]
将路径拆分为源路径和文件名
除了常规路径外,这也处理URL和Huggingface hub路径。
- Parameters:
路径 (字符串 或 FetchSource)
- Returns:
str – 源
str – 文件名
- speechbrain.utils.data_utils.unsqueeze_as(x, target)[source]
将张量重塑为与目标张量兼容的形状,仅在x.dim() <= y.dim()时有效
- Parameters:
x (torch.Tensor) – 原始张量
target (torch.Tensor) – 张量的形状
- Returns:
result – 张量 x 的一个视图,重塑为与 y 兼容的形状
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.pad_divisible(tensor, length=None, factor=2, len_dim=1, pad_value=0)[source]
向张量的指定维度添加额外的填充,使其可以被指定的因子整除。这在将可变长度序列传递给下采样UNets或其他类似架构时非常有用,其中输入预期可以被下采样因子整除。
- Parameters:
- Returns:
tensor_padded (torch.Tensor) – 张量,如果需要的话,带有额外的填充
length (torch.Tensor) – 调整后的长度张量,如果提供了的话
Example
>>> x = torch.tensor([[1, 2, 3, 4], ... [5, 6, 0, 0]]) >>> lens = torch.tensor([1., .5]) >>> x_pad, lens_pad = pad_divisible(x, length=lens, factor=5) >>> x_pad tensor([[1, 2, 3, 4, 0], [5, 6, 0, 0, 0]]) >>> lens_pad tensor([0.8000, 0.4000])
- speechbrain.utils.data_utils.trim_to_shape(tensor, shape)[source]
修剪指定的张量以匹配指定的形状
- Parameters:
tensor (torch.Tensor) – 一个张量
shape (可枚举) – 所需的形状
- Returns:
tensor – 修剪后的张量
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.trim_as(tensor, other)[source]
修剪指定的张量以匹配另一个张量的形状(最多)
- Parameters:
tensor (torch.Tensor:) – 一个张量
其他 (torch.Tensor) – 需要匹配形状的张量
- Returns:
tensor – 修剪后的张量
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.match_shape(tensor, other)[source]
一个瑞士军刀式的辅助函数,用于将一个张量的形状匹配到另一个张量的形状 - 对于掩码等非常有用。
- Parameters:
tensor (torch.Tensor:) – 一个张量
其他 (torch.Tensor) – 要匹配形状的张量
- Returns:
tensor – 具有匹配形状的张量
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.batch_shuffle(items, batch_size)[source]
在序列中随机打乱固定大小的批次
- Parameters:
items (sequence) – 一个张量或可索引的序列,例如列表
batch_size (int) – 批量大小
- Returns:
items – 原始项目。如果传递的是张量,将返回张量。否则,将返回一个列表
- Return type:
序列
- speechbrain.utils.data_utils.concat_padded_features(feats, lens, dim=1, feats_slice_start=None, feats_slice_end=None)[source]
将多个填充的特征张量以向量化的方式连接成一个单一的填充张量,而不在最终张量中包含填充,仅在末尾添加填充。该函数支持张量的可选相对切片。
一个可能的使用场景是连接批次的频谱图或音频。
- speechbrain.utils.data_utils.unsqueeze_1d(value, dim, value_dim)[source]
将一个一维张量扩展到指定的维度数,保留一个维度并在其他地方创建“虚拟”维度
- speechbrain.utils.data_utils.length_range(feats, len_dim)[source]
创建一个在一维范围内与其张量形状匹配的张量
- Parameters:
feats (torch.Tensor) – 一个任意形状的特征张量
len_dim (torch.Tensor) – 用作长度的维度
- Returns:
result – 一个与feats形状匹配的张量,沿着长度维度从0到最大长度的范围在其他维度上重复
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.non_batch_dims(sample)[source]
返回指定张量的所有维度,除了批次维度
- Parameters:
sample (torch.Tensor) – 一个任意的张量
- Returns:
dims – 一个维度列表
- Return type:
- speechbrain.utils.data_utils.masked_mean(sample, mask=None)[source]
一个计算每个样本平均值的度量函数,不包括填充
- Parameters:
样本 (torch.Tensor) – 一个频谱图的张量
mask (torch.Tensor) – 一个长度掩码
- Returns:
result – 一个均值张量
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.masked_std(sample, mask=None)[source]
一个计算每个样本标准差的度量函数,不包括填充
- Parameters:
样本 (torch.Tensor) – 一个频谱图的张量
mask (torch.Tensor) – 一个长度掩码
- Returns:
result – 一个均值张量
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.masked_min(sample, mask=None)[source]
一个计算每个样本最小值的度量函数
- Parameters:
样本 (torch.Tensor) – 一个频谱图的张量
mask (torch.Tensor) – 一个长度掩码
- Returns:
result – 一个均值张量
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.masked_max(sample, mask=None)[source]
一个计算每个样本最小值的度量函数
- Parameters:
样本 (torch.Tensor) – 一个频谱图的张量
mask (torch.Tensor) – 一个长度掩码
- Returns:
result – 一个均值张量
- Return type:
torch.Tensor
- speechbrain.utils.data_utils.dist_stats(sample, mask=None)[source]
返回标准分布统计量(均值、标准差、最小值、最大值)
- Parameters:
样本 (torch.Tensor) – 一个频谱图的张量
mask (torch.Tensor) – 一个长度掩码
- Returns:
result – 一个均值张量
- Return type:
torch.Tensor