speechbrain.nnet.complex_networks.c_linear 模块
实现复数值线性变换的库。
- 作者
Titouan Parcollet 2020
摘要
类
此函数实现了一个全连接的复数值线性层:y = Wx + b。 |
参考
- class speechbrain.nnet.complex_networks.c_linear.CLinear(n_neurons, input_shape, bias=True, init_criterion='glorot', weight_init='complex')[source]
基类:
Module
此函数实现了一个全连接的复数值线性层:y = Wx + b。因此,y、W、x 和 b 都是复数。一个复数表示为 r + xi。一个复数 Tensor x = [batch, 32] 可以理解为 [batch, 0:15] 是实部 R,[batch, 16:31] 是虚部 Xi。因此,特征维度被切成两半(必须能被 2 整除)。
- 参数:
n_neurons (int) – 输出神经元的数量(即输出的维度)。请注意,这些是复数值神经元。如果指定 256 个神经元,则输出维度将是 512。
input_shape (tuple) – 输入的预期大小。
bias (bool) – 如果为 True,则采用加性偏置项 b。
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. 等人。
示例
>>> inputs = torch.rand(10, 50, 40) >>> lin = CLinear(n_neurons=100, input_shape=inputs.shape) >>> output = lin(inputs) >>> output.shape torch.Size([10, 50, 200])