speechbrain.nnet.complex_networks.c_RNN 模块
实现复数循环神经网络的库。
- Authors
Titouan Parcollet 2020
摘要
类:
此函数实现了一个复数LSTM。 |
|
此函数实现了复数LSTM层。 |
|
此函数实现了一个复数值的轻量级GRU(liGRU)。 |
|
该函数实现了复数轻量门控循环单元层。 |
|
此函数实现了一个简单的复值RNN。 |
|
此函数实现了复数循环层。 |
参考
- class speechbrain.nnet.complex_networks.c_RNN.CLSTM(hidden_size, input_shape, num_layers=1, bias=True, dropout=0.0, bidirectional=False, return_hidden=False, init_criterion='glorot', weight_init='complex')[source]
基础:
Module此函数实现了一个复数值的LSTM。
输入格式为 (batch, time, fea) 或 (batch, time, fea, channel)。 在后一种形状中,最后两个维度将被合并: (batch, time, fea * channel)
- Parameters:
hidden_size (int) – 输出神经元的数量(即输出的维度)。 指定的值是针对复数神经元的。因此,输出是2*hidden_size。
input_shape (tuple) – 输入的预期形状。
num_layers (int, 可选) – 在RNN架构中使用的层数(默认为1)。
bias (bool, 可选) – 如果为True,则采用加法偏置b(默认为True)。
dropout (float, 可选) – 这是dropout因子(必须在0和1之间)(默认值为0.0)。
双向 (bool, 可选) – 如果为True,则使用一个双向模型,该模型会从左到右和从右到左扫描序列(默认为False)。
return_hidden (bool, 可选) – 如果为True,函数将返回最后一个隐藏层。
init_criterion (str , optional) – (glorot, he). 此参数控制权重的初始化标准。 它与weights_init结合使用,以构建复数权重的初始化方法(默认为“glorot”)。
weight_init (str, optional) – (complex, unitary). 此参数定义了复数权重的初始化过程(默认为“complex”)。“complex”将根据init_criterion和复数极坐标形式生成随机复数权重。 “unitary”将权重归一化到单位圆上。 更多详情请参阅:“Deep Complex Networks”,Trabelsi C. 等人。
Example
>>> inp_tensor = torch.rand([10, 16, 40]) >>> rnn = CLSTM(hidden_size=16, input_shape=inp_tensor.shape) >>> out_tensor = rnn(inp_tensor) >>> torch.Size([10, 16, 32])
- class speechbrain.nnet.complex_networks.c_RNN.CLSTM_Layer(input_size, hidden_size, num_layers, batch_size, dropout=0.0, bidirectional=False, init_criterion='glorot', weight_init='complex')[source]
基础:
Module此函数实现了复数LSTM层。
- Parameters:
input_size (int) – 输入张量的特征维度(以实际值表示)。
hidden_size (int) – 输出值的数量(以实际值表示)。
num_layers (int, 可选) – 在RNN架构中使用的层数(默认为1)。
batch_size (int) – 输入张量的批量大小。
dropout (float, 可选) – 这是dropout因子(必须在0和1之间)(默认值为0.0)。
双向 (bool, 可选) – 如果为True,则使用一个双向模型,该模型会从左到右和从右到左扫描序列(默认为False)。
init_criterion (str, 可选) – (glorot, he). 此参数控制权重的初始化标准。 它与weights_init结合使用,以构建复数权重的初始化方法 (默认值为“glorot”)。
weight_init (str, optional) – (complex, unitary). 此参数定义了复数值权重的初始化过程(默认为“complex”)。“complex”将根据init_criterion和复数极坐标形式生成随机复数值权重。 “unitary”将权重归一化到单位圆上。 更多详情请参阅:“Deep Complex Networks”,Trabelsi C. 等人。
- class speechbrain.nnet.complex_networks.c_RNN.CRNN(hidden_size, input_shape, nonlinearity='tanh', num_layers=1, bias=True, dropout=0.0, bidirectional=False, return_hidden=False, init_criterion='glorot', weight_init='complex')[source]
基础:
Module此函数实现了一个普通的复数RNN。
输入格式为 (batch, time, fea) 或 (batch, time, fea, channel)。 在后一种形状中,最后两个维度将被合并: (batch, time, fea * channel)
- Parameters:
hidden_size (int) – 输出神经元的数量(即输出的维度)。 指定的值是针对复数神经元的。因此,输出是2*hidden_size。
input_shape (tuple) – 输入的预期形状。
非线性 (str, 可选) – 非线性类型(tanh, relu)(默认“tanh”)。
num_layers (int, 可选) – 在RNN架构中使用的层数(默认为1)。
bias (bool, 可选) – 如果为True,则采用加法偏置b(默认为True)。
dropout (float, 可选) – 这是dropout因子(必须在0和1之间)(默认值为0.0)。
双向 (bool, 可选) – 如果为True,则使用一个双向模型,该模型会从左到右和从右到左扫描序列(默认为False)。
return_hidden (bool, 可选) – 如果为True,函数返回最后一个隐藏层(默认为False)。
init_criterion (str , optional) – (glorot, he). 此参数控制权重的初始化标准。 它与weights_init结合使用,以构建复数权重的初始化方法(默认为“glorot”)。
weight_init (str, 可选) – (complex, unitary). 此参数定义了复数权重的初始化过程(默认为“complex”)。“complex”将根据init_criterion和复数极坐标形式生成随机复数权重。 “unitary”将权重归一化到单位圆上。 更多详情请参阅:“Deep Complex Networks”,Trabelsi C. 等人。
Example
>>> inp_tensor = torch.rand([10, 16, 30]) >>> rnn = CRNN(hidden_size=16, input_shape=inp_tensor.shape) >>> out_tensor = rnn(inp_tensor) >>> torch.Size([10, 16, 32])
- class speechbrain.nnet.complex_networks.c_RNN.CRNN_Layer(input_size, hidden_size, num_layers, batch_size, dropout=0.0, nonlinearity='tanh', bidirectional=False, init_criterion='glorot', weight_init='complex')[source]
基础:
Module此函数实现了复数循环层。
- Parameters:
input_size (int) – 输入张量的特征维度(以实际值表示)。
hidden_size (int) – 输出值的数量(以实际值表示)。
num_layers (int, 可选) – 在RNN架构中使用的层数(默认为1)。
batch_size (int) – 输入张量的批量大小。
dropout (float, 可选) – 这是dropout因子(必须在0和1之间)(默认值为0.0)。
非线性 (str, 可选) – 非线性类型(tanh, relu)(默认“tanh”)。
双向 (bool, 可选) – 如果为True,则使用一个双向模型,该模型会从左到右和从右到左扫描序列(默认为False)。
init_criterion (str , optional) – (glorot, he). 此参数控制权重的初始化标准。 它与weights_init结合使用,以构建复数权重的初始化方法(默认为“glorot”)。
weight_init (str, optional) – (complex, unitary). 此参数定义了复数权重的初始化过程(默认为“complex”)。“complex”将根据init_criterion和复数极坐标形式生成随机复数权重。 “unitary”将权重归一化到单位圆上。 更多详情请参阅:“Deep Complex Networks”,Trabelsi C. 等人。
- class speechbrain.nnet.complex_networks.c_RNN.CLiGRU(hidden_size, input_shape, nonlinearity='relu', normalization='batchnorm', num_layers=1, bias=True, dropout=0.0, bidirectional=False, return_hidden=False, init_criterion='glorot', weight_init='complex')[source]
基础:
Module此函数实现了一个复数值的轻量级GRU(liGRU)。
Ligru 是基于批归一化 + relu 激活 + 循环丢弃的单门 GRU 模型。更多信息请参见:
“M. Ravanelli, P. Brakel, M. Omologo, Y. Bengio, 用于语音识别的轻量门控循环单元, 发表于 IEEE 计算智能新兴主题汇刊, 2018” (https://arxiv.org/abs/1803.10225)
为了加快速度,它在使用前会使用torch即时编译器(jit)进行编译。
它接受格式为 (batch, time, fea) 的输入张量。 在像 (batch, time, fea, channel) 这样的4d输入情况下,张量会被展平为 (batch, time, fea*channel)。
- Parameters:
hidden_size (int) – 输出神经元的数量(即输出的维度)。 指定的值是针对复数神经元的。因此,输出是2*hidden_size。
input_shape (tuple) – 输入的预期大小。
非线性 (str) – 非线性类型(tanh, relu)。
normalization (str) – ligru模型的归一化类型(batchnorm, layernorm)。 任何不同于batchnorm和layernorm的字符串将导致不进行归一化。
num_layers (int) – 在RNN架构中使用的层数。
bias (bool) – 如果为True,则采用加法偏置b。
dropout (float) – 这是dropout因子(必须在0和1之间)。
双向 (bool) – 如果为True,则使用一个双向模型,该模型会从左到右和从右到左扫描序列。
return_hidden (bool) – 如果为True,函数将返回最后一个隐藏层。
init_criterion (str , optional) – (glorot, he). 此参数控制权重的初始化标准。 它与weights_init结合使用,以构建复数权重的初始化方法(默认为“glorot”)。
weight_init (str, optional) – (complex, unitary). 此参数定义了复数权重的初始化过程(默认为“complex”)。“complex”将根据init_criterion和复数极坐标形式生成随机复数权重。 “unitary”将权重归一化到单位圆上。 更多详情请参阅:“Deep Complex Networks”,Trabelsi C. 等人。
Example
>>> inp_tensor = torch.rand([10, 16, 30]) >>> rnn = CLiGRU(input_shape=inp_tensor.shape, hidden_size=16) >>> out_tensor = rnn(inp_tensor) >>> torch.Size([4, 10, 5])
- class speechbrain.nnet.complex_networks.c_RNN.CLiGRU_Layer(input_size, hidden_size, num_layers, batch_size, dropout=0.0, nonlinearity='relu', normalization='batchnorm', bidirectional=False, init_criterion='glorot', weight_init='complex')[source]
基础:
Module此函数实现了复数轻门控循环单元层。
- Parameters:
input_size (int) – 输入张量的特征维度。
hidden_size (int) – 输出值的数量。
num_layers (int) – 在RNN架构中使用的层数。
batch_size (int) – 输入张量的批量大小。
dropout (float) – 这是dropout因子(必须在0和1之间)。
非线性 (str) – 非线性类型(tanh, relu)。
normalization (str) – 归一化类型(batchnorm, layernorm)。 任何不同于batchnorm和layernorm的字符串将导致不进行归一化。
双向 (bool) – 如果为True,则使用一个双向模型,该模型会从左到右和从右到左扫描序列。
init_criterion (str , optional) – (glorot, he). 此参数控制权重的初始化标准。 它与weights_init结合使用,以构建复数权重的初始化方法(默认为“glorot”)。
weight_init (str, optional) – (complex, unitary). 此参数定义了复数值权重的初始化过程(默认为“complex”)。“complex”将根据init_criterion和复数极坐标形式生成随机复数值权重。 “unitary”将权重归一化到单位圆上。 更多详情请参阅:“Deep Complex Networks”,Trabelsi C. 等人。