speechbrain.lobes.models.CRDNN 模块

卷积、循环和全连接网络的组合。

作者
  • Mirco Ravanelli 2020

  • Peter Plantinga 2020

  • Ju-Chieh Chou 2020

  • Titouan Parcollet 2020

  • Abdel 2020

概述

CNN_Block

CNN 块,基于 VGG 块。

CRDNN

该模型是 CNN、RNN 和 DNN 的组合。

DNN_Block

线性层块。

参考

class speechbrain.lobes.models.CRDNN.CRDNN(input_size=None, input_shape=None, activation=<class 'torch.nn.modules.activation.LeakyReLU'>, dropout=0.15, cnn_blocks=2, cnn_channels=[128, 256], cnn_kernelsize=(3, 3), time_pooling=False, time_pooling_size=2, freq_pooling_size=2, rnn_class=<class 'speechbrain.nnet.RNN.LiGRU'>, inter_layer_pooling_size=[2, 2], using_2d_pooling=False, rnn_layers=4, rnn_neurons=512, rnn_bidirectional=True, rnn_re_init=False, dnn_blocks=2, dnn_neurons=512, projection_dim=-1, use_rnnp=False)[source]

基础:Sequential

该模型是 CNN、RNN 和 DNN 的组合。

该模型期望 3 维输入 [batch, time, feats],默认输出大小为 [batch, time, dnn_neurons]。

唯一的例外是如果 using_2d_poolingtime_pooling 为 True。在这种情况下,时间维度将被下采样。

参数:
  • input_size (int) – 期望输入在第三维度的长度。

  • input_shape (tuple) – 尽管 input_size 就足够了,但此选项允许将 CRDNN 与其他类一起放入 sequential 中。

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

  • dropout (float) – 应用于 CNN、RNN 和 DNN 的神经元 dropout 率。

  • cnn_blocks (int) – 要包含的卷积神经网络块的数量。

  • cnn_channels (list of ints) – 每个 CNN 块的输出通道数列表。

  • cnn_kernelsize (tuple of ints) – 卷积核的大小。

  • time_pooling (bool) – 是否在 RNN 之前在时间轴上对语音进行池化。

  • time_pooling_size (int) – 在时间轴上进行池化的元素数量。

  • freq_pooling_size (int) – 在频率轴上进行池化的元素数量。

  • rnn_class (torch class) – 在 CRDNN 网络中使用的 RNN 类型 (LiGRU, LSTM, GRU, RNN)

  • inter_layer_pooling_size (list of ints) – 每个 CNN 块的池化大小列表。

  • using_2d_pooling (bool) – 在每个 CNN 块之后是使用 2D 还是 1D 池化。

  • rnn_layers (int) – 要包含的循环 RNN 层的数量。

  • rnn_neurons (int) – RNN 每层神经元的数量。

  • rnn_bidirectional (bool) – 该模型是仅向前处理还是双向处理。

  • rnn_re_init (bool,) – 如果为 True,则将对循环权重应用正交初始化。

  • dnn_blocks (int) – 要包含的线性神经网络块的数量。

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

  • projection_dim (int) – 投影层中的神经元数量。该层用于减小 CNN 块后获得的展平表示的大小。

  • use_rnnp (bool) – 如果为 True,则在 RNN 层之间添加一个线性投影层。

示例

>>> inputs = torch.rand([10, 15, 60])
>>> model = CRDNN(input_shape=inputs.shape)
>>> outputs = model(inputs)
>>> outputs.shape
torch.Size([10, 15, 512])
class speechbrain.lobes.models.CRDNN.CNN_Block(input_shape, channels, kernel_size=[3, 3], activation=<class 'torch.nn.modules.activation.LeakyReLU'>, using_2d_pool=False, pooling_size=2, dropout=0.15)[source]

基础:Sequential

CNN 块,基于 VGG 块。

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

  • channels (int) – 块的卷积通道数量。

  • kernel_size (tuple) – 2D 卷积核的大小

  • activation (torch.nn.Module class) – 用于实例化激活层的类。

  • using_2d_pool (bool) – 是使用 2D 池化还是仅使用 1D 池化。

  • pooling_size (int) – 池化核的大小,对于 2D 池化会复制。

  • dropout (float) – 用于丢弃通道的概率。

示例

>>> inputs = torch.rand(10, 15, 60)
>>> block = CNN_Block(input_shape=inputs.shape, channels=32)
>>> outputs = block(inputs)
>>> outputs.shape
torch.Size([10, 15, 30, 32])
class speechbrain.lobes.models.CRDNN.DNN_Block(input_shape, neurons, activation=<class 'torch.nn.modules.activation.LeakyReLU'>, dropout=0.15)[source]

基础:Sequential

线性层块。

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

  • neurons (int) – 线性层的大小。

  • activation (torch.nn.Module class) – 用于构建激活层的类定义。

  • dropout (float) – 用于丢弃神经元的概率。

示例

>>> inputs = torch.rand(10, 15, 128)
>>> block = DNN_Block(input_shape=inputs.shape, neurons=64)
>>> outputs = block(inputs)
>>> outputs.shape
torch.Size([10, 15, 64])