speechbrain.lobes.models.ResNet 模块

用于说话人确认的 ResNet PreActivated

作者
  • Mickael Rouvier 2022

摘要

BasicBlock

ResNet 块的实现。

Classifier

此类实现了在特征之上的余弦相似度计算。

ResNet

ResNet 的实现

SEBasicBlock

Squeeze-and-Excitation ResNet 块的实现。

SEBlock

Squeeze-and-Excitation 块的实现。

函数

conv1x1

kernel_size = 1 的二维卷积

conv3x3

kernel_size = 3 的二维卷积

参考

speechbrain.lobes.models.ResNet.conv3x3(in_planes, out_planes, stride=1)[source]

kernel_size = 3 的二维卷积

speechbrain.lobes.models.ResNet.conv1x1(in_planes, out_planes, stride=1)[source]

kernel_size = 1 的二维卷积

class speechbrain.lobes.models.ResNet.SEBlock(channels, reduction=1, activation=<class 'torch.nn.modules.activation.ReLU'>)[source]

基类: Module

Squeeze-and-Excitation 块的实现。

参数:
  • channels (int) – 通道数。

  • reduction (int) – 通道的缩减因子。

  • activation (Callable) – 应用于层之间的函数。

示例

>>> inp_tensor = torch.rand([1, 64, 80, 40])
>>> se_layer = SEBlock(64)
>>> out_tensor = se_layer(inp_tensor)
>>> out_tensor.shape
torch.Size([1, 64, 80, 40])
forward(x)[source]

中间步骤。处理输入 tensor x 并返回一个输出 tensor。

class speechbrain.lobes.models.ResNet.BasicBlock(in_channels, out_channels, stride=1, downsample=None, activation=<class 'torch.nn.modules.activation.ReLU'>)[source]

基类: Module

ResNet 块的实现。

参数:
  • in_channels (int) – 输入通道数。

  • out_channels (int) – 输出通道数。

  • stride (int) – 降低空间维度比例的因子

  • downsample (torch function) – 当 stride != 1 时用于对块的 identity 进行下采样的函数

  • activation (torch class) – 用于构建激活层的类。

示例

>>> inp_tensor = torch.rand([1, 64, 80, 40])
>>> layer = BasicBlock(64, 64, stride=1)
>>> out_tensor = layer(inp_tensor)
>>> out_tensor.shape
torch.Size([1, 64, 80, 40])
forward(x)[source]

中间步骤。处理输入 tensor x 并返回一个输出 tensor。

class speechbrain.lobes.models.ResNet.SEBasicBlock(in_channels, out_channels, reduction=1, stride=1, downsample=None, activation=<class 'torch.nn.modules.activation.ReLU'>)[source]

基类: Module

Squeeze-and-Excitation ResNet 块的实现。

参数:
  • in_channels (int) – 输入通道数。

  • out_channels (int) – 输出通道数。

  • reduction (int) – 通道的缩减因子。

  • stride (int) – 降低空间维度比例的因子

  • downsample (torch function) – 当 stride != 1 时用于对块的 identity 进行下采样的函数

  • activation (torch class) – 用于构建激活层的类。

示例

>>> inp_tensor = torch.rand([1, 64, 80, 40])
>>> layer = SEBasicBlock(64, 64, stride=1)
>>> out_tensor = layer(inp_tensor)
>>> out_tensor.shape
torch.Size([1, 64, 80, 40])
forward(x)[source]

中间步骤。处理输入 tensor x 并返回一个输出 tensor。

class speechbrain.lobes.models.ResNet.ResNet(input_size=80, device='cpu', activation=<class 'torch.nn.modules.activation.ReLU'>, channels=[128, 128, 256, 256], block_sizes=[3, 4, 6, 3], strides=[1, 2, 2, 2], lin_neurons=256)[source]

基类: Module

ResNet 的实现

参数:
  • input_size (int) – 输入维度的期望大小。

  • device (str) – 使用的设备,例如 “cpu” 或 “cuda”。

  • activation (torch class) – 用于构建激活层的类。

  • channels (list of ints) – 每阶段使用的通道数列表。

  • block_sizes (list of ints) – 每阶段创建的组数列表。

  • strides (list of ints) – 每阶段的步长列表。

  • lin_neurons (int) – 线性层中的神经元数量。

示例

>>> input_feats = torch.rand([2, 400, 80])
>>> compute_embedding = ResNet(lin_neurons=256)
>>> outputs = compute_embedding(input_feats)
>>> outputs.shape
torch.Size([2, 256])
forward(x, lengths=None)[source]

返回 embedding 向量。

参数:
  • x (torch.Tensor) – 形状为 (batch, time, channel) 的 Tensor。

  • lengths (torch.Tensor) – 对应输入的相对长度。

返回:

x – embedding 向量。

返回类型:

torch.Tensor

class speechbrain.lobes.models.ResNet.Classifier(input_size, device='cpu', lin_blocks=0, lin_neurons=256, out_neurons=1211)[source]

基类: Module

此类实现了在特征之上的余弦相似度计算。

参数:
  • input_size (int) – 输入的期望大小。

  • device (str) – 使用的设备,例如 “cpu” 或 “cuda”。

  • lin_blocks (int) – 线性层数量。

  • lin_neurons (int) – 线性层中的神经元数量。

  • out_neurons (int) – 类别数量。

示例

>>> classify = Classifier(input_size=2, lin_neurons=2, out_neurons=2)
>>> outputs = torch.tensor([ [1., -1.], [-9., 1.], [0.9, 0.1], [0.1, 0.9] ])
>>> outputs = outputs.unsqueeze(1)
>>> cos = classify(outputs)
>>> (cos < -1.0).long().sum()
tensor(0)
>>> (cos > 1.0).long().sum()
tensor(0)
forward(x)[source]

返回说话人上的输出概率。

参数:

x (torch.Tensor) – Torch tensor。

返回:

x – 说话人上的输出概率。

返回类型:

torch.Tensor