speechbrain.nnet.quaternion_networks.q_CNN 模块

实现四元数值卷积神经网络的库。

作者
  • Titouan Parcollet 2020

  • Drew Wagner 2024

总结

QConv1d

此函数实现四元数值一维卷积。

QConv2d

此函数实现四元数值一维卷积。

参考

class speechbrain.nnet.quaternion_networks.q_CNN.QConv1d(out_channels, kernel_size, input_shape=None, stride=1, dilation=1, padding='same', groups=1, bias=True, padding_mode='reflect', init_criterion='glorot', weight_init='quaternion', spinor=False, vector_scale=False, max_norm=None)[source]

基类: Module

此函数实现四元数值一维卷积。

参数:
  • out_channels (int) – 输出通道数。请注意,这些是四元数值神经元。如果指定 256 个通道,则输出维度将为 1024。

  • kernel_size (int) – 卷积滤波器的核大小。

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

  • stride (int, optional) – 卷积滤波器的步长因子(默认为 1)。

  • dilation (int, optional) – 卷积滤波器的扩张因子(默认为 1)。

  • padding (str, optional) – (same, valid, causal)。如果为“valid”,不执行填充。如果为“same”且步长为 1,输出形状与输入形状相同。“causal”产生因果(扩张)卷积(默认为“same”)。

  • groups (int, optional) – 默认值: 1。此选项指定卷积组。有关更多信息,请参阅 torch.nn 文档(默认为 1)。

  • bias (bool, optional) – 如果为 True,则采用加性偏置 b(默认为 True)。

  • padding_mode (str, optional) – 此标志指定填充类型。有关更多信息,请参阅 torch.nn 文档(默认为“reflect”)。

  • init_criterion (str , optional) – (glorot, he)。此参数控制权重的初始化标准。它与 weights_init 结合使用,以构建四元数值权重的初始化方法(默认为“glorot”)。

  • weight_init (str, optional) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion”将根据 init_criterion 和四元数极坐标形式生成随机四元数权重。“unitary”将权重归一化使其位于单位圆上(默认为“quaternion”)。更多细节请参阅:“Quaternion Recurrent Neural Networks”, Parcollet T. 等。

  • spinor (bool, optional) – 当为 True 时,该层将转换为旋量层。更精确地说,W*x 将转换为 W*x*W-1。输入 x 将像在旋量神经网络中一样被 W 旋转。但是,x 必须是实部为零的四元数 (0 + xi + yj + zk)。实际上,旋转操作只作用于向量部分。请注意,W 在旋转之前总是会被归一化以确保四元数代数(默认为 False)。更多细节请参阅:“Quaternion neural networks”, Parcollet T.。

  • vector_scale (bool, optional) – vector_scale 仅在 spinor = True 时使用。在旋量神经网络的上下文中,输入向量 x 会执行多次旋转并求和。因此,输出向量的范数总是随着层数的增加而增加,这使得具有深层配置的神经网络不稳定。vector_scale 参数是可学习的参数,通过将输出向量乘以一个小的可训练参数来起到门控作用(默认为 False)。

  • max_norm (float) – 核最大范数。

示例

>>> inp_tensor = torch.rand([10, 16, 40])
>>> cnn_1d = QConv1d(
...     input_shape=inp_tensor.shape, out_channels=12, kernel_size=3
... )
>>> out_tensor = cnn_1d(inp_tensor)
>>> out_tensor.shape
torch.Size([10, 16, 48])
forward(x)[source]

返回卷积的输出。

参数:

x (torch.Tensor (batch, time, channel)) – 要进行卷积的输入。期望 3d 或 4d 张量。

返回:

x – 卷积输出。

返回类型:

torch.Tensor

class speechbrain.nnet.quaternion_networks.q_CNN.QConv2d(out_channels, kernel_size, input_shape=None, stride=1, dilation=1, padding='same', groups=1, bias=True, padding_mode='reflect', init_criterion='glorot', weight_init='quaternion', spinor=False, vector_scale=False, max_norm=None, swap=False, skip_transpose=False)[source]

基类: Module

此函数实现四元数值一维卷积。

参数:
  • out_channels (int) – 输出通道数。请注意,这些是四元数值神经元。如果指定 256 个通道,则输出维度将为 1024。

  • kernel_size (int) – 卷积滤波器的核大小。

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

  • stride (int, optional) – 卷积滤波器的步长因子(默认为 1)。

  • dilation (int, optional) – 卷积滤波器的扩张因子(默认为 1)。

  • padding (str, optional) – (same, causal)。如果为“valid”,不执行填充。如果为“same”且步长为 1,输出形状与输入形状相同(默认为“same”)。

  • groups (int, optional) – 此选项指定卷积组。有关更多信息,请参阅 torch.nn 文档。(默认为 1)。

  • bias (bool, optional) – 如果为 True,则采用加性偏置 b(默认为 True)。

  • padding_mode (str, optional) – 此标志指定填充类型。有关更多信息,请参阅 torch.nn 文档。(默认为“reflect”)

  • init_criterion (str , optional) – (glorot, he)。此参数控制权重的初始化标准。它与 weights_init 结合使用,以构建四元数值权重的初始化方法(默认为“glorot”)。

  • weight_init (str, optional) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion”将根据 init_criterion 和四元数极坐标形式生成随机四元数权重。“unitary”将权重归一化使其位于单位圆上(默认为“quaternion”)。更多细节请参阅:“Quaternion Recurrent Neural Networks”, Parcollet T. 等。

  • spinor (bool, optional) – 当为 True 时,该层将转换为旋量层。更精确地说,W*x 将转换为 W*x*W-1。输入 x 将像在旋量神经网络中一样被 W 旋转。但是,x 必须是实部为零的四元数 (0 + xi + yj + zk)。实际上,旋转操作只作用于向量部分。请注意,W 在旋转之前总是会被归一化以确保四元数代数(默认为 False)。更多细节请参阅:“Quaternion neural networks”, Parcollet T.。

  • vector_scale (bool, optional) – vector_scale 仅在 spinor = True 时使用。在旋量神经网络的上下文中,输入向量 x 会执行多次旋转并求和。因此,输出向量的范数总是随着层数的增加而增加,这使得具有深层配置的神经网络不稳定。vector_scale 参数是可学习的参数,通过将输出向量乘以一个小的可训练参数来起到门控作用(默认为 False)。

  • max_norm (float) – 核最大范数。

  • swap (bool) – 如果为 True,卷积使用格式 (B, C, W, H)。如果为 False,卷积使用 (B, H, W, C)。仅当 skip_transpose 为 False 时有效。

  • skip_transpose (bool) – 如果为 False,使用 speechbrain 的 batch x spatial.dim2 x spatial.dim1 x channel 约定。如果为 True,使用 batch x channel x spatial.dim1 x spatial.dim2 约定。

示例

>>> inp_tensor = torch.rand([10, 4, 16, 40])
>>> cnn_1d = QConv2d(
...     input_shape=inp_tensor.shape, out_channels=12, kernel_size=3
... )
>>> out_tensor = cnn_1d(inp_tensor)
>>> out_tensor.shape
torch.Size([10, 4, 16, 48])
forward(x)[source]

返回卷积的输出。

参数:

x (torch.Tensor (batch, time, channel)) – 要进行卷积的输入。期望 3d 或 4d 张量。

返回:

x – 卷积输出。

返回类型:

torch.Tensor