speechbrain.nnet.normalization 模块

实现标准化的库。

Authors
  • Mirco Ravanelli 2020

  • 吉列尔莫·坎巴拉 2021

  • Sarthak Yadav 2022

摘要

类:

BatchNorm1d

对输入张量应用一维批量归一化。

BatchNorm2d

对输入张量应用2D批量归一化。

ExponentialMovingAverage

应用可学习的指数移动平均,如可学习的PCEN层所需

GroupNorm

对输入张量应用组归一化。

InstanceNorm1d

对输入张量应用1d实例归一化。

InstanceNorm2d

对输入张量应用2d实例归一化。

LayerNorm

对输入张量应用层归一化。

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

对输入张量应用一维批量归一化。

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])
forward(x)[source]

返回归一化的输入张量。

Parameters:

x (torch.Tensor (batch, time, [channels])) – 输入以进行标准化。输入中期望为2d或3d张量 当combine_dims=True时,可以使用4d张量。

Returns:

x_n – 归一化的输出。

Return type:

torch.Tensor

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:
  • 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时,此模块不会跟踪这些统计信息。

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])
forward(x)[source]

返回归一化的输入张量。

Parameters:

x (torch.Tensor (batch, time, channel1, channel2)) – 输入以进行归一化。期望为4维张量。

Returns:

x_n – 归一化的输出。

Return type:

torch.Tensor

class speechbrain.nnet.normalization.LayerNorm(input_size=None, input_shape=None, eps=1e-05, elementwise_affine=True)[source]

基础:Module

对输入张量应用层归一化。

Parameters:
  • input_size (int) – 需要标准化的维度的预期大小。

  • input_shape (tuple) – 输入的预期形状。

  • eps (float) – 该值被添加到标准差估计中,以提高数值稳定性。

  • elementwise_affine (bool) – 如果为True,此模块具有可学习的逐元素仿射参数,初始化为1(用于权重)和0(用于偏置)。

Example

>>> input = torch.randn(100, 101, 128)
>>> norm = LayerNorm(input_shape=input.shape)
>>> output = norm(input)
>>> output.shape
torch.Size([100, 101, 128])
forward(x)[source]

返回归一化的输入张量。

Parameters:

x (torch.Tensor (batch, time, channels)) – 输入以进行标准化。预期为3维或4维张量。

Return type:

归一化的输出。

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])
forward(x)[source]

返回归一化的输入张量。

Parameters:

x (torch.Tensor (batch, time, channels)) – 需要标准化的输入。期望是3D张量。

Returns:

x_n – 归一化的输出。

Return type:

torch.Tensor

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])
forward(x)[source]

返回归一化的输入张量。

Parameters:

x (torch.Tensor (batch, time, channel1, channel2)) – 输入以进行归一化。期望为4维张量。

Returns:

x_n – 归一化的输出。

Return type:

torch.Tensor

class speechbrain.nnet.normalization.GroupNorm(input_shape=None, input_size=None, num_groups=None, eps=1e-05, affine=True)[source]

基础:Module

对输入张量应用组归一化。

Parameters:
  • input_shape (tuple) – 输入的预期形状。或者,使用 input_size

  • input_size (int) – 输入的预期大小。或者,使用 input_shape

  • num_groups (int) – 将通道分成的组数。

  • eps (float) – 该值被添加到标准差估计中,以提高数值稳定性。

  • affine (bool) – 一个布尔值,当设置为True时,该模块具有可学习的每通道仿射参数,初始化为1(用于权重)和0(用于偏置)。

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])
forward(x)[source]

返回归一化的输入张量。

Parameters:

x (torch.Tensor (batch, time, channels)) – 需要标准化的输入。期望是3维或4维张量。

Returns:

x_n – 归一化的输出。

Return type:

torch.Tensor

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:
  • input_size (int) – 输入的预期大小。

  • coeff_init (float) – 初始平滑系数值

  • per_channel (bool) – 控制是否为每个输入通道独立学习平滑系数

  • trainable (bool) – 是否学习PCEN参数或使用固定的

  • skip_transpose (bool) – 如果为False,使用speechbrain的批次 x 时间 x 通道约定。 如果为True,使用批次 x 通道 x 时间约定。

Example

>>> inp_tensor = torch.rand([10, 50, 40])
>>> pcen = ExponentialMovingAverage(40)
>>> out_tensor = pcen(inp_tensor)
>>> out_tensor.shape
torch.Size([10, 50, 40])
forward(x)[source]

返回归一化的输入张量。

Arguments
xtorch.Tensor (batch, time, channels)

输入以进行标准化。

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])
forward(x)[source]

返回归一化的输入张量。

Parameters:

x (torch.Tensor (batch, time, channels)) – 需要标准化的输入。

Returns:

output – 归一化的输出。

Return type:

torch.Tensor