双线性
- 类torch.nn.Bilinear(in1_features, in2_features, out_features, bias=True, device=None, dtype=None)[源代码]
-
对输入数据进行双线性变换:$y = x_1^T A x_2 + b$。
- 参数
- 形状:
-
-
输入1: $(*, H_{in1})$ 其中 $H_{in1}=\text{in1\_features}$,$*$ 表示可以是任意数量的额外维度(包括没有)。输入的所有维度除了最后一个之外都应该相同。
-
输入2: $(*, H_{in2})$,其中$H_{in2} = \text{in2\_features}$。
-
输出为 $(*, H_{out})$,其中 $H_{out}=\text{out\_features}$。除了最后一维之外,所有维度的形状都与输入相同。
-
- 变量
-
-
weight (torch.Tensor) – 模块的可学习权重,形状为$(\text{out\_features}, \text{in1\_features}, \text{in2\_features})$。这些值从分布$\mathcal{U}(-\sqrt{k}, \sqrt{k})$初始化,其中$k = \frac{1}{\text{in1\_features}}$
-
bias - 模块的可学习偏置,形状为$(\text{out\_features})$。如果
bias
是True
,则从分布$\mathcal{U}(-\sqrt{k}, \sqrt{k})$中初始化值,其中$k = \frac{1}{\text{in1\_features}}$
-
示例:
>>> m = nn.Bilinear(20, 30, 40) >>> input1 = torch.randn(128, 20) >>> input2 = torch.randn(128, 30) >>> output = m(input1, input2) >>> print(output.size()) torch.Size([128, 40])