speechbrain.nnet.complex_networks.c_linear 模块
实现复数值线性变换的库。
- Authors
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。一个复数张量 x = [batch, 32] 可以理解为 [batch, 0:15] = R 和 [batch, 16:31] = Xi。因此,特征维度被减半(必须能被2整除)。
- Parameters:
n_neurons (int) – 这是输出神经元的数量(即输出的维度)。请注意,这些是复数值神经元。如果指定了256个神经元,输出维度将是512。
input_shape (tuple) – 输入的预期大小。
bias (bool) – 如果为True,则采用加法偏置b。
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
>>> 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])