speechbrain.nnet.complex_networks.c_normalization 模块

实现复数值归一化的库。

Authors
  • Titouan Parcollet 2020

摘要

类:

CBatchNorm

该类实现了由“Deep Complex Networks”引入的复数值批量归一化,作者为Trabelsi C.

CLayerNorm

此类用于实例化“深度复杂网络”中引入的复杂层归一化,Trabelsi C.

函数:

c_norm

此函数用于应用由“深度复杂网络”引入的复杂归一化,Trabelsi C.

c_standardization

此函数用于标准化一个中心化的复数张量(集合的均值必须为0)。

参考

class speechbrain.nnet.complex_networks.c_normalization.CBatchNorm(input_shape=None, input_size=None, dim=-1, eps=0.0001, momentum=0.1, scale=True, center=True, track_running_stats=True)[source]

基础:Module

该类实现了“深度复杂网络”中引入的复数值批量归一化,由Trabelsi C.等人提出。

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

  • input_size (int) – 输入的预期大小。

  • dim (int, 可选) – 它定义了应该被标准化的轴。通常对应于通道维度(默认值为-1)。

  • eps (float, optional) – 用于稳定操作的项(默认值为1e-4)。

  • 动量 (浮点数, 可选) – 它为实值批量归一化定义了动量 (默认值为0.1)。

  • scale (bool, 可选,) – 它定义了是否应使用缩放。它等同于实值批量归一化缩放(默认值为 True)。

  • center (bool, optional) – 它定义了是否应该使用居中。它等同于实值批归一化居中(默认值为 True)。

  • track_running_stats (bool, optional) – 等同于实值批归一化参数。 当为True时,统计信息会被跟踪。当为False时,仅使用在批次上计算的统计信息(默认为True)。

Example

>>> inp_tensor = torch.rand([10, 16, 30])
>>> CBN = CBatchNorm(input_shape=inp_tensor.shape)
>>> out_tensor = CBN(inp_tensor)
>>> out_tensor.shape
torch.Size([10, 16, 30])
reset_running_stats()[source]

只需将运行统计信息重置为初始值。

reset_parameters()[source]

只需重置所有参数。

forward(input)[source]

返回归一化的输入张量。

Parameters:

输入 (torch.Tensor (批次, 时间, [通道])) – 需要标准化的输入。它可以是2d、3d、4d。

Return type:

归一化的输出张量。

class speechbrain.nnet.complex_networks.c_normalization.CLayerNorm(input_shape=None, input_size=None, dim=-1, eps=0.0001, scale=True, center=True)[source]

基础:Module

此类用于实例化由“深度复杂网络”引入的复杂层归一化, Trabelsi C. 等人。

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

  • input_size (int) – 输入维度的预期大小。

  • dim (int, 可选) – 它定义了应该被标准化的轴。通常对应于通道维度(默认值为-1)。

  • eps (float, optional) – 用于稳定操作的项(默认值为1e-4)。

  • scale (bool, 可选,) – 它定义了是否应使用缩放。它等同于实值批量归一化缩放(默认值为 True)。

  • center (bool, optional) – 它定义了是否应该使用居中。它等同于实值批归一化居中(默认值为 True)。

Example

>>> inp_tensor = torch.rand([10, 16, 30])
>>> CBN = CLayerNorm(input_shape=inp_tensor.shape)
>>> out_tensor = CBN(inp_tensor)
>>> out_tensor.shape
torch.Size([10, 16, 30])
reset_parameters()[source]

只需重置所有参数。

forward(input)[source]

计算复数归一化。

speechbrain.nnet.complex_networks.c_normalization.c_norm(input_centred, Vrr, Vii, Vri, beta, gamma_rr, gamma_ri, gamma_ii, scale=True, center=True, layernorm=False, dim=-1)[source]

此函数用于应用“深度复杂网络”中引入的复杂归一化,Trabelsi C. 等人。

Parameters:
  • input_centred (torch.Tensor) – 这是要归一化的张量。特征维度被分为两半,前半部分对应实部,后半部分对应虚部。

  • Vrr (torch.Tensor) – 它是一个包含实部之间协方差的张量。

  • Vii (torch.Tensor) – 这是一个包含虚部之间协方差的张量。

  • Vri (torch.Tensor) – 它是一个包含实部和虚部之间协方差的张量。

  • beta (torch.Tensor) – 它是一个张量,对应于实值批量归一化中的beta参数,但在复值空间中。

  • gamma_rr (torch.Tensor) – 这是一个包含实部之间gamma的张量。

  • gamma_ri (torch.Tensor) – 这是一个包含实部和虚部之间gamma的张量。

  • gamma_ii (torch.Tensor) – 这是一个包含虚部之间伽马值的张量。

  • scale (bool, 可选) – 它定义了是否应使用缩放。它等同于实值批量归一化的缩放(默认为 True)。

  • center (bool, 可选,) – 它定义了是否应该使用居中。它等同于实值批归一化的居中(默认值为 True)。

  • layernorm (bool, 可选) – 它定义了是否从layernorm或batchnorm层调用c_standardization(默认为False)。

  • dim (int, optional) – 它定义了应被视为复数值轴的轴(除以2得到r和i)(默认值为-1)。

Return type:

复杂的范数张量。

speechbrain.nnet.complex_networks.c_normalization.c_standardization(input_centred, Vrr, Vii, Vri, layernorm=False, dim=-1)[source]

此函数用于标准化一个中心化的复数张量(集合的均值必须为0)。

Parameters:
  • input_centred (torch.Tensor) – 这是要归一化的张量。特征维度被分为两半,前半部分对应实部,后半部分对应虚部。

  • Vrr (torch.Tensor) – 它是一个包含实部之间协方差的张量。

  • Vii (torch.Tensor) – 这是一个包含虚部之间协方差的张量。

  • Vri (torch.Tensor) – 它是一个包含实部和虚部之间协方差的张量。

  • layernorm (bool, 可选) – 它定义了是否从layernorm或batchnorm层调用c_standardization(默认为False)。

  • dim (int, 可选) – 它定义了应被视为复数值轴的轴(除以2以获得r和i)(默认值为-1)。

Return type:

标准化的中心张量。