speechbrain.nnet.normalization 模块
实现标准化的库。
- Authors
Mirco Ravanelli 2020
吉列尔莫·坎巴拉 2021
Sarthak Yadav 2022
摘要
类:
对输入张量应用一维批量归一化。 |
|
对输入张量应用2D批量归一化。 |
|
应用可学习的指数移动平均,如可学习的PCEN层所需 |
|
对输入张量应用组归一化。 |
|
对输入张量应用1d实例归一化。 |
|
对输入张量应用2d实例归一化。 |
|
对输入张量应用层归一化。 |
|
该类实现了一个可学习的每通道能量归一化(PCEN)层,支持[1]中指定的原始PCEN以及[2]中指定的sPCEN。 |
参考
- class speechbrain.nnet.normalization.BatchNorm1d(input_shape=None, input_size=None, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, combine_batch_time=False, skip_transpose=False)[source]
基础:
Module对输入张量应用一维批量归一化。
- Parameters:
input_shape (tuple) – 输入的预期形状。或者,使用
input_size。input_size (int) – 输入的预期大小。或者,使用
input_shape。eps (float) – 该值被添加到标准差估计中,以提高数值稳定性。
动量 (float) – 这是一个用于计算running_mean和running_var的值。
affine (bool) – 当设置为True时,将学习仿射参数。
track_running_stats (bool) – 当设置为True时,此模块会跟踪运行中的均值和方差, 当设置为False时,此模块不会跟踪这些统计信息。
combine_batch_time (bool) – 当为true时,它将批处理和时间轴合并。
skip_transpose (bool) – 是否跳过转置。
Example
>>> input = torch.randn(100, 10) >>> norm = BatchNorm1d(input_shape=input.shape) >>> output = norm(input) >>> output.shape torch.Size([100, 10])
- class speechbrain.nnet.normalization.BatchNorm2d(input_shape=None, input_size=None, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)[source]
基础:
Module对输入张量应用二维批量归一化。
- Parameters:
Example
>>> input = torch.randn(100, 10, 5, 20) >>> norm = BatchNorm2d(input_shape=input.shape) >>> output = norm(input) >>> output.shape torch.Size([100, 10, 5, 20])
- class speechbrain.nnet.normalization.LayerNorm(input_size=None, input_shape=None, eps=1e-05, elementwise_affine=True)[source]
基础:
Module对输入张量应用层归一化。
- Parameters:
Example
>>> input = torch.randn(100, 101, 128) >>> norm = LayerNorm(input_shape=input.shape) >>> output = norm(input) >>> output.shape torch.Size([100, 101, 128])
- class speechbrain.nnet.normalization.InstanceNorm1d(input_shape=None, input_size=None, eps=1e-05, momentum=0.1, track_running_stats=True, affine=False)[source]
基础:
Module对输入张量应用一维实例归一化。
- Parameters:
input_shape (tuple) – 输入的预期形状。或者,使用
input_size。input_size (int) – 输入的预期大小。或者,使用
input_shape。eps (float) – 该值被添加到标准差估计中,以提高数值稳定性。
动量 (float) – 这是一个用于计算running_mean和running_var的值。
track_running_stats (bool) – 当设置为True时,此模块会跟踪运行中的均值和方差, 当设置为False时,此模块不会跟踪这些统计信息。
affine (bool) – 一个布尔值,当设置为True时,该模块具有可学习的仿射参数,初始化方式与批归一化相同。默认值:False。
Example
>>> input = torch.randn(100, 10, 20) >>> norm = InstanceNorm1d(input_shape=input.shape) >>> output = norm(input) >>> output.shape torch.Size([100, 10, 20])
- class speechbrain.nnet.normalization.InstanceNorm2d(input_shape=None, input_size=None, eps=1e-05, momentum=0.1, track_running_stats=True, affine=False)[source]
基础:
Module对输入张量应用2D实例归一化。
- Parameters:
input_shape (tuple) – 输入的预期形状。或者,使用
input_size。input_size (int) – 输入的预期大小。或者,使用
input_shape。eps (float) – 该值被添加到标准差估计中,以提高数值稳定性。
动量 (float) – 这是一个用于计算running_mean和running_var的值。
track_running_stats (bool) – 当设置为True时,此模块会跟踪运行中的均值和方差, 当设置为False时,此模块不会跟踪这些统计信息。
affine (bool) – 一个布尔值,当设置为True时,该模块具有可学习的仿射参数,初始化方式与批归一化相同。默认值:False。
Example
>>> input = torch.randn(100, 10, 20, 2) >>> norm = InstanceNorm2d(input_shape=input.shape) >>> output = norm(input) >>> output.shape torch.Size([100, 10, 20, 2])
- class speechbrain.nnet.normalization.GroupNorm(input_shape=None, input_size=None, num_groups=None, eps=1e-05, affine=True)[source]
基础:
Module对输入张量应用组归一化。
- Parameters:
Example
>>> input = torch.randn(100, 101, 128) >>> norm = GroupNorm(input_size=128, num_groups=128) >>> output = norm(input) >>> output.shape torch.Size([100, 101, 128])
- class speechbrain.nnet.normalization.ExponentialMovingAverage(input_size: int, coeff_init: float = 0.04, per_channel: bool = False, trainable: bool = True, skip_transpose: bool = False)[source]
基础:
Module应用可学习的指数移动平均,如可学习的PCEN层所需
- Parameters:
Example
>>> inp_tensor = torch.rand([10, 50, 40]) >>> pcen = ExponentialMovingAverage(40) >>> out_tensor = pcen(inp_tensor) >>> out_tensor.shape torch.Size([10, 50, 40])
- class speechbrain.nnet.normalization.PCEN(input_size, alpha: float = 0.96, smooth_coef: float = 0.04, delta: float = 2.0, root: float = 2.0, floor: float = 1e-12, trainable: bool = True, per_channel_smooth_coef: bool = True, skip_transpose: bool = False)[source]
基础:
Module该类实现了一个可学习的每通道能量归一化(PCEN)层,支持[1]中指定的原始PCEN以及[2]中指定的sPCEN。
[1] Yuxuan Wang, Pascal Getreuer, Thad Hughes, Richard F. Lyon, Rif A. Saurous, “用于鲁棒和远场关键词检测的可训练前端”, 发表于 ICASSP 2017 会议 (https://arxiv.org/abs/1607.05666)
[2] Neil Zeghidour, Olivier Teboul, F{‘e}lix de Chaumont Quitry & Marco Tagliasacchi, “LEAF: 一种可学习的音频分类前端”, 在ICLR 2021的会议论文中 (https://arxiv.org/abs/2101.08596)
默认参数值与[2]中使用的参数值相对应。
- Parameters:
input_size (int) – 输入的预期大小。
alpha (float) – 指定PCEN的alpha系数
smooth_coef (float) – 为PCEN指定的平滑系数
delta (float) – 指定PCEN的delta系数
root (float) – 指定PCEN的根系数
floor (float) – 指定PCEN的地板系数
trainable (bool) – 是否学习PCEN参数或使用固定的
per_channel_smooth_coef (bool) – 是否为每个通道学习独立的光滑系数。 当为True时,实际上使用的是[2]中的sPCEN。
skip_transpose (bool) – 如果为False,使用speechbrain的批次 x 时间 x 通道约定。 如果为True,使用批次 x 通道 x 时间约定。
Example
>>> inp_tensor = torch.rand([10, 50, 40]) >>> pcen = PCEN(40, alpha=0.96) # sPCEN >>> out_tensor = pcen(inp_tensor) >>> out_tensor.shape torch.Size([10, 50, 40])