speechbrain.nnet.quaternion_networks.q_RNN 模块
实现四元数值循环神经网络的库。
- 作者
Titouan Parcollet 2020
摘要
类
此函数实现了四元数值 LSTM,最早在论文“Quaternion Recurrent Neural Networks”中提出,作者 Parcollet T. 等人。 |
|
此函数实现了四元数值 LSTM 层。 |
|
此函数实现了四元数值轻量 GRU (liGRU)。 |
|
此函数实现了四元数值轻量门控循环单元 (ligru) 层。 |
|
此函数实现了香草四元数值 RNN。 |
|
此函数实现了四元数值循环层。 |
参考
- class speechbrain.nnet.quaternion_networks.q_RNN.QLSTM(hidden_size, input_shape, num_layers=1, bias=True, dropout=0.0, bidirectional=False, init_criterion='glorot', weight_init='quaternion', autograd=True)[source]
基类:
Module
此函数实现了四元数值 LSTM,最早在论文“Quaternion Recurrent Neural Networks”中提出,作者 Parcollet T. 等人。
输入格式为 (batch, time, fea) 或 (batch, time, fea, channel)。在后一种形状中,最后两个维度将被合并:(batch, time, fea * channel)
- 参数:
hidden_size (int) – 输出神经元的数量(即,输出的维度)。指定值以四元数值神经元为单位。因此,输出是 4*hidden_size。
input_shape (tuple) – 输入张量的期望形状。
num_layers (int, 可选) – RNN 架构中使用的层数(默认 1)。
bias (bool, 可选) – 如果为 True,则采用加性偏置 b(默认 True)。
dropout (float, 可选) – 这是 dropout 因子(必须在 0 和 1 之间)(默认 0.0)。
bidirectional (bool, 可选) – 如果为 True,则使用双向模型,该模型同时从右到左和从左到右扫描序列(默认 False)。
init_criterion (str , 可选) – (glorot, he)。此参数控制权重的初始化准则。它与 weights_init 结合,构建四元数值权重的初始化方法(默认“glorot”)。
weight_init (str, 可选) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion” 将生成遵循 init_criterion 和四元数极坐标形式的随机四元数权重。“unitary” 将权重归一化到单位圆上(默认“quaternion”)。更多详情请参阅:“Quaternion Recurrent Neural Networks”,Parcollet T. 等人。
autograd (bool, 可选) – 当为 True 时,将使用默认的 PyTorch autograd。当为 False 时,将使用自定义反向传播,将内存消耗降低 3 到 4 倍。它也慢 2 倍(默认 True)。
示例
>>> inp_tensor = torch.rand([10, 16, 40]) >>> rnn = QLSTM(hidden_size=16, input_shape=inp_tensor.shape) >>> out_tensor = rnn(inp_tensor) >>> torch.Size([10, 16, 64])
- class speechbrain.nnet.quaternion_networks.q_RNN.QLSTM_Layer(input_size, hidden_size, num_layers, batch_size, dropout=0.0, bidirectional=False, init_criterion='glorot', weight_init='quaternion', autograd='true')[source]
基类:
Module
此函数实现了四元数值 LSTM 层。
- 参数:
input_size (int) – 输入张量的特征维度(以实数值为单位)。
hidden_size (int) – 输出值的数量(以实数值为单位)。
num_layers (int, 可选) – RNN 架构中使用的层数(默认 1)。
batch_size (int) – 输入张量的批次大小。
dropout (float, 可选) – 这是 dropout 因子(必须在 0 和 1 之间)(默认 0.0)。
bidirectional (bool, 可选) – 如果为 True,则使用双向模型,该模型同时从右到左和从左到右扫描序列(默认 False)。
init_criterion (str , 可选) – (glorot, he)。此参数控制权重的初始化准则。它与 weights_init 结合,构建四元数值权重的初始化方法(默认“glorot”)。
weight_init (str, 可选) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion” 将生成遵循 init_criterion 和四元数极坐标形式的随机四元数权重。“unitary” 将权重归一化到单位圆上(默认“quaternion”)。更多详情请参阅:“Quaternion Recurrent Neural Networks”,Parcollet T. 等人。
autograd (bool, 可选) – 当为 True 时,将使用默认的 PyTorch autograd。当为 False 时,将使用自定义反向传播,将内存消耗降低 3 到 4 倍。它也慢 2 倍(默认 True)。
- class speechbrain.nnet.quaternion_networks.q_RNN.QRNN(hidden_size, input_shape, nonlinearity='tanh', num_layers=1, bias=True, dropout=0.0, bidirectional=False, init_criterion='glorot', weight_init='quaternion', autograd=True)[source]
基类:
Module
此函数实现了香草四元数值 RNN。
输入格式为 (batch, time, fea) 或 (batch, time, fea, channel)。在后一种形状中,最后两个维度将被合并:(batch, time, fea * channel)
- 参数:
hidden_size (int) – 输出神经元的数量(即,输出的维度)。指定值以四元数值神经元为单位。因此,输出是 4*hidden_size。
input_shape (tuple) – 输入张量的期望形状。
nonlinearity (str, 可选) – 非线性类型 (tanh, relu)(默认“tanh”)。
num_layers (int, 可选) – RNN 架构中使用的层数(默认 1)。
bias (bool, 可选) – 如果为 True,则采用加性偏置 b(默认 True)。
dropout (float, 可选) – 这是 dropout 因子(必须在 0 和 1 之间)(默认 0.0)。
bidirectional (bool, 可选) – 如果为 True,则使用双向模型,该模型同时从右到左和从左到右扫描序列(默认 False)。
init_criterion (str , 可选) – (glorot, he)。此参数控制权重的初始化准则。它与 weights_init 结合,构建四元数值权重的初始化方法(默认“glorot”)。
weight_init (str, 可选) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion” 将生成遵循 init_criterion 和四元数极坐标形式的随机四元数权重。“unitary” 将权重归一化到单位圆上(默认“quaternion”)。更多详情请参阅:“Quaternion Recurrent Neural Networks”,Parcollet T. 等人。
autograd (bool, 可选) – 当为 True 时,将使用默认的 PyTorch autograd。当为 False 时,将使用自定义反向传播,将内存消耗降低 3 到 4 倍。它也慢 2 倍(默认 True)。
示例
>>> inp_tensor = torch.rand([10, 16, 40]) >>> rnn = QRNN(hidden_size=16, input_shape=inp_tensor.shape) >>> out_tensor = rnn(inp_tensor) >>> torch.Size([10, 16, 64])
- class speechbrain.nnet.quaternion_networks.q_RNN.QRNN_Layer(input_size, hidden_size, num_layers, batch_size, dropout=0.0, nonlinearity='tanh', bidirectional=False, init_criterion='glorot', weight_init='quaternion', autograd='true')[source]
基类:
Module
此函数实现了四元数值循环层。
- 参数:
input_size (int) – 输入张量的特征维度(以实数值为单位)。
hidden_size (int) – 输出值的数量(以实数值为单位)。
num_layers (int, 可选) – RNN 架构中使用的层数(默认 1)。
batch_size (int) – 输入张量的批次大小。
dropout (float, 可选) – 这是 dropout 因子(必须在 0 和 1 之间)(默认 0.0)。
nonlinearity (str, 可选) – 非线性类型 (tanh, relu)(默认“tanh”)。
bidirectional (bool, 可选) – 如果为 True,则使用双向模型,该模型同时从右到左和从左到右扫描序列(默认 False)。
init_criterion (str , 可选) – (glorot, he)。此参数控制权重的初始化准则。它与 weights_init 结合,构建四元数值权重的初始化方法(默认“glorot”)。
weight_init (str, 可选) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion” 将生成遵循 init_criterion 和四元数极坐标形式的随机四元数权重。“unitary” 将权重归一化到单位圆上(默认“quaternion”)。更多详情请参阅:“Quaternion Recurrent Neural Networks”,Parcollet T. 等人。
autograd (bool, 可选) – 当为 True 时,将使用默认的 PyTorch autograd。当为 False 时,将使用自定义反向传播,将内存消耗降低 3 到 4 倍。它也慢 2 倍(默认 True)。
- class speechbrain.nnet.quaternion_networks.q_RNN.QLiGRU(hidden_size, input_shape, nonlinearity='leaky_relu', num_layers=1, bias=True, dropout=0.0, bidirectional=False, init_criterion='glorot', weight_init='quaternion', autograd=True)[source]
基类:
Module
此函数实现了四元数值轻量 GRU (liGRU)。
Ligru 是一种基于 batch-norm + relu 激活 + 循环 dropout 的单门控 GRU 模型。更多信息请参阅
“M. Ravanelli, P. Brakel, M. Omologo, Y. Bengio, 用于语音识别的轻量门控循环单元 (Light Gated Recurrent Units for Speech Recognition), 载于 IEEE Transactions on Emerging Topics in Computational Intelligence, 2018” (https://arxiv.org/abs/1803.10225)
为了加速,它在使用前会通过 torch 即时编译器 (jit) 进行编译。
它接受格式为 (batch, time, fea) 的输入张量。对于像 (batch, time, fea, channel) 这样的 4d 输入,张量会被展平为 (batch, time, fea*channel)。
- 参数:
hidden_size (int) – 输出神经元的数量(即,输出的维度)。指定值以四元数值神经元为单位。因此,输出是 2*hidden_size。
input_shape (tuple) – 输入的期望形状。
nonlinearity (str) – 非线性类型 (tanh, relu)。
num_layers (int) – RNN 架构中使用的层数。
bias (bool) – 如果为 True,则采用加性偏置 b。
dropout (float) – 这是 dropout 因子(必须在 0 和 1 之间)。
bidirectional (bool) – 如果为 True,则使用双向模型,该模型同时从右到左和从左到右扫描序列。
init_criterion (str, 可选) – (glorot, he)。此参数控制权重的初始化准则。它与 weights_init 结合,构建四元数值权重的初始化方法(默认“glorot”)。
weight_init (str, 可选) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion” 将生成遵循 init_criterion 和四元数极坐标形式的随机四元数值权重。“unitary” 将权重归一化到单位圆上(默认“quaternion”)。更多详情请参阅:“Deep quaternion Networks”,Trabelsi C. 等人。
autograd (bool, 可选) – 当为 True 时,将使用默认的 PyTorch autograd。当为 False 时,将使用自定义反向传播,将内存消耗降低 3 到 4 倍。它也慢 2 倍(默认 True)。
示例
>>> inp_tensor = torch.rand([10, 16, 40]) >>> rnn = QLiGRU(input_shape=inp_tensor.shape, hidden_size=16) >>> out_tensor = rnn(inp_tensor) >>> torch.Size([4, 10, 5])
- class speechbrain.nnet.quaternion_networks.q_RNN.QLiGRU_Layer(input_size, hidden_size, num_layers, batch_size, dropout=0.0, nonlinearity='leaky_relu', normalization='batchnorm', bidirectional=False, init_criterion='glorot', weight_init='quaternion', autograd=True)[source]
基类:
Module
此函数实现了四元数值轻量门控循环单元 (ligru) 层。
- 参数:
input_size (int) – 输入张量的特征维度。
hidden_size (int) – 输出值的数量。
num_layers (int) – RNN 架构中使用的层数。
batch_size (int) – 输入张量的批次大小。
dropout (float) – 这是 dropout 因子(必须在 0 和 1 之间)。
nonlinearity (str) – 非线性类型 (tanh, relu)。
normalization (str) – 要使用的归一化类型 (batchnorm 或 none)
bidirectional (bool) – 如果为 True,则使用双向模型,该模型同时从右到左和从左到右扫描序列。
init_criterion (str , 可选) – (glorot, he)。此参数控制权重的初始化准则。它与 weights_init 结合,构建四元数值权重的初始化方法(默认“glorot”)。
weight_init (str, 可选) – (quaternion, unitary)。此参数定义四元数值权重的初始化过程。“quaternion” 将生成遵循 init_criterion 和四元数极坐标形式的随机四元数权重。“unitary” 将权重归一化到单位圆上(默认“quaternion”)。更多详情请参阅:“Deep quaternion Networks”,Trabelsi C. 等人。
autograd (bool, 可选) – 当为 True 时,将使用默认的 PyTorch autograd。当为 False 时,将使用自定义反向传播,将内存消耗降低 3 到 4 倍。它也慢 2 倍(默认 True)。