speechbrain.lobes.models.CRDNN 模块

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

Authors
  • Mirco Ravanelli 2020

  • 彼得·普兰廷加 2020

  • 周珏洁 2020

  • Titouan Parcollet 2020

  • 阿卜杜勒 2020

摘要

类:

CNN_Block

CNN 块,基于 VGG 块。

CRDNN

该模型是CNNs、RNNs和DNNs的组合。

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。 在这种情况下,时间维度将被下采样。

Parameters:
  • input_size (int) – 预期输入在第三维度的长度。

  • input_shape (tuple) – 虽然 input_size 已经足够,但这个选项可以允许将 CRDNN 放入与其他类的序列中。

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

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

  • 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层之间添加一个线性投影层。

Example

>>> 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 块。

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

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

  • kernel_size (tuple) – 二维卷积核的大小

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

  • using_2d_pool (bool) – 是否使用2d池化或仅使用1d池化。

  • pooling_size (int) – 池化核的大小,对于2d池化是重复的。

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

Example

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

线性层的块。

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

  • 神经元 (int) – 线性层的大小。

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

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

Example

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