speechbrain.nnet.complex_networks.c_normalization 模块

实现复数值归一化的库。

作者
  • Titouan Parcollet 2020

摘要

CBatchNorm

此类实现了 "Deep Complex Networks", Trabelsi C. 等人引入的复数值批量归一化。

CLayerNorm

此类用于实例化 "Deep Complex Networks", Trabelsi C. 等人引入的复数层归一化。

函数

c_norm

此函数用于应用 "Deep Complex Networks", 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

此类实现了“Deep Complex Networks”, Trabelsi C. 等人引入的复数值批量归一化。

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

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

  • dim (int, optional) – 定义应该进行归一化的轴。通常对应于通道维度 (默认值为 -1)。

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

  • momentum (float, optional) – 定义动量,类似于实数值批量归一化 (默认值为 0.1)。

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

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

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

示例

>>> 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]

返回归一化后的输入张量。

参数:

input (torch.Tensor (batch, time, [channels])) – 要归一化的输入。可以是 2d, 3d, 4d。

返回类型:

归一化后的输出张量。

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

此类用于实例化“Deep Complex Networks”, Trabelsi C. 等人引入的复数层归一化。

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

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

  • dim (int, optional) – 定义应该进行归一化的轴。通常对应于通道维度 (默认值为 -1)。

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

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

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

示例

>>> 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]

此函数用于应用“Deep Complex Networks”, Trabelsi C. 等人引入的复数归一化。

参数:
  • 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) – 一个包含虚部之间 gamma 的张量。

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

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

  • layernorm (bool, optional) – 定义 c_standardization 是从层归一化还是批量归一化层调用的 (默认值为 False)。

  • dim (int, optional) – 定义应视为复数值轴的轴 (除以 2 得到实部和虚部) (默认值为 -1)。

返回类型:

复数归一化张量。

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

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

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

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

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

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

  • layernorm (bool, optional) – 定义 c_standardization 是从层归一化还是批量归一化层调用的 (默认值为 False)。

  • dim (int, optional) – 定义应视为复数值轴的轴 (除以 2 得到实部和虚部) (默认值为 -1)。

返回类型:

标准化后的中心化张量。