speechbrain.lobes.models.ResNet 模块

用于说话人验证的ResNet预激活

Authors
  • 米凯尔·鲁维埃 2022

摘要

类:

BasicBlock

ResNet 块的实现。

Classifier

该类在特征之上实现了余弦相似度。

ResNet

ResNet的实现

SEBasicBlock

一个Squeeze-and-Excitation ResNet块的实现。

SEBlock

挤压和激励块的实现。

函数:

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块的实现。

Parameters:
  • channels (int) – 通道的数量。

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

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

Example

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

中间步骤。处理输入张量 x 并返回输出张量。

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

基础:Module

ResNet块的实现。

Parameters:
  • in_channels (int) – 输入通道的数量。

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

  • stride (int) – 减少空间维度的因子

  • downsample (torch 函数) – 当步幅 != 1 时,用于下采样块的身份的函数

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

Example

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

中间步骤。处理输入张量 x 并返回输出张量。

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 块的实现。

Parameters:
  • in_channels (int) – 输入通道的数量。

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

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

  • stride (int) – 减少空间维度的因子

  • downsample (torch 函数) – 一个用于在步幅不为1时对块的恒等映射进行下采样的函数

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

Example

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

中间步骤。处理输入张量 x 并返回输出张量。

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的一个实现

Parameters:
  • 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) – 线性层中的神经元数量。

Example

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

返回嵌入向量。

Parameters:
  • x (torch.Tensor) – 形状为 (batch, time, channel) 的张量。

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

Returns:

x – 嵌入向量。

Return type:

torch.Tensor

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

基础:Module

该类在特征之上实现了余弦相似度。

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

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

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

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

  • out_neurons (int) – 类别数量。

Example

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

返回说话者的输出概率。

Parameters:

x (torch.Tensor) – Torch 张量。

Returns:

x – 输出每个说话者的概率。

Return type:

torch.Tensor