Bilinear¶
- class torch.nn.Bilinear(in1_features, in2_features, out_features, bias=True, device=None, dtype=None)[source]¶
Applies a bilinear transformation to the incoming data: \(y = x_1^T A x_2 + b\).
- Parameters:
- Shape:
Input1: \((*, H_{in1})\) where \(H_{in1}=\text{in1\_features}\) and \(*\) means any number of additional dimensions including none. All but the last dimension of the inputs should be the same.
Input2: \((*, H_{in2})\) where \(H_{in2}=\text{in2\_features}\).
Output: \((*, H_{out})\) where \(H_{out}=\text{out\_features}\) and all but the last dimension are the same shape as the input.
- Variables:
weight (torch.Tensor) – the learnable weights of the module of shape \((\text{out\_features}, \text{in1\_features}, \text{in2\_features})\). The values are initialized from \(\mathcal{U}(-\sqrt{k}, \sqrt{k})\), where \(k = \frac{1}{\text{in1\_features}}\)
bias – the learnable bias of the module of shape \((\text{out\_features})\). If
bias
isTrue
, the values are initialized from \(\mathcal{U}(-\sqrt{k}, \sqrt{k})\), where \(k = \frac{1}{\text{in1\_features}}\)
Examples:
>>> 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])