speechbrain.nnet.normalization 模块
实现归一化的库。
- 作者
Mirco Ravanelli 2020
Guillermo Cámbara 2021
Sarthak Yadav 2022
摘要
类
对输入张量应用一维批量归一化。 |
|
对输入张量应用二维批量归一化。 |
|
应用可学习的指数移动平均,这是可学习 PCEN 层所需的 |
|
对输入张量应用组归一化。 |
|
对输入张量应用一维实例归一化。 |
|
对输入张量应用二维实例归一化。 |
|
对输入张量应用层归一化。 |
|
此类实现了可学习的每通道能量归一化 (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
对输入张量应用一维批量归一化。
- 参数:
input_shape (tuple) – 输入的预期形状。或者,使用
input_size
。input_size (int) – 输入的预期大小。或者,使用
input_shape
。eps (float) – 添加到标准差估计中的值,以提高数值稳定性。
momentum (float) – 用于 running_mean 和 running_var 计算的值。
affine (bool) – 设置为 True 时,将学习仿射参数。
track_running_stats (bool) – 设置为 True 时,此模块会跟踪运行均值和方差;设置为 False 时,则不跟踪此类统计信息。
combine_batch_time (bool) – 为 True 时,它会合并批量和时间轴。
skip_transpose (bool) – 是否跳过转置。
示例
>>> 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
对输入张量应用二维批量归一化。
- 参数:
示例
>>> 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
对输入张量应用层归一化。
- 参数:
示例
>>> 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
对输入张量应用一维实例归一化。
- 参数:
input_shape (tuple) – 输入的预期形状。或者,使用
input_size
。input_size (int) – 输入的预期大小。或者,使用
input_shape
。eps (float) – 添加到标准差估计中的值,以提高数值稳定性。
momentum (float) – 用于 running_mean 和 running_var 计算的值。
track_running_stats (bool) – 设置为 True 时,此模块会跟踪运行均值和方差;设置为 False 时,则不跟踪此类统计信息。
affine (bool) – 一个布尔值,设置为 True 时,此模块具有可学习的仿射参数,初始化方式与批量归一化相同。默认为 False。
示例
>>> 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
对输入张量应用二维实例归一化。
- 参数:
input_shape (tuple) – 输入的预期形状。或者,使用
input_size
。input_size (int) – 输入的预期大小。或者,使用
input_shape
。eps (float) – 添加到标准差估计中的值,以提高数值稳定性。
momentum (float) – 用于 running_mean 和 running_var 计算的值。
track_running_stats (bool) – 设置为 True 时,此模块会跟踪运行均值和方差;设置为 False 时,则不跟踪此类统计信息。
affine (bool) – 一个布尔值,设置为 True 时,此模块具有可学习的仿射参数,初始化方式与批量归一化相同。默认为 False。
示例
>>> 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
对输入张量应用组归一化。
- 参数:
示例
>>> 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 层所需的
- 参数:
示例
>>> 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, “Trainable Frontend For Robust and Far-Field Keyword Spotting”, in Proc of ICASSP 2017 (https://arxiv.org/abs/1607.05666)
[2] Neil Zeghidour, Olivier Teboul, F{‘e}lix de Chaumont Quitry & Marco Tagliasacchi, “LEAF: A LEARNABLE FRONTEND FOR AUDIO CLASSIFICATION”, in Proc of ICLR 2021 (https://arxiv.org/abs/2101.08596)
默认参数值与 [2] 中使用的对应。
- 参数:
input_size (int) – 输入的预期大小。
alpha (float) – 指定 PCEN 的 alpha 系数
smooth_coef (float) – 指定 PCEN 的平滑系数
delta (float) – 指定 PCEN 的 delta 系数
root (float) – 指定 PCEN 的 root 系数
floor (float) – 指定 PCEN 的 floor 系数
trainable (bool) – 是否学习 PCEN 参数或使用固定参数
per_channel_smooth_coef (bool) – 是否为每个通道独立学习平滑系数。为 True 时,实质上使用 [2] 中的 sPCEN
skip_transpose (bool) – 如果为 False,使用 speechbrain 的 batch x time x channel 惯例。如果为 True,使用 batch x channel x time 惯例。
示例
>>> 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])