PyTorch torch.nn.Bilinear-Funktion

PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch


torch.nn.BilinearEs ist eine bilineare Schicht in PyTorch.

Es führt eine bilineare Transformation an zwei Eingaben durch und wird häufig zur Merkmalsfusion verwendet.

Funktionsdefinition

torch.nn.Bilinear(in1_features, out_features, out_features, bias=True)

Formel

y = x1 * W * x2 + b

Anwendungsbeispiel

Beispiel 1: Grundlegende Verwendung

Beispiel

import torch
import torch.nn as nn

# Bilineare Schicht: zwei 100-dimensionale Eingaben -> 50-dimensionale Ausgabe
bilinear = nn.Bilinear(100, 100, 50)

# Zwei Eingaben
x1 = torch.randn(4, 100)
x2 = torch.randn(4, 100)

output = bilinear(x1, x2)

print("Eingabe 1:", x1.shape)
print("Eingabe 2:", x2.shape)
print("Ausgabe:", output.shape)

Beispiel 2: Merkmalsfusion

Beispiel

import torch
import torch.nn as nn

# Bilineare Merkmalsfusion (ähnlich wie Skip-gram)
class FusionNet(nn.Module):
    def __init__(self, dim=128):
        super(FusionNet, self).__init__()
        self.bilinear = nn.Bilinear(dim, dim, dim)

    def forward(self, feat1, feat2):
        return self.bilinear(feat1, feat2)

model = FusionNet()
f1 = torch.randn(4, 128)
f2 = torch.randn(4, 128)

output = model(f1, f2)
print("Fusion-Ausgabe:", output.shape)

Beispiel 3: Parameteranzahl

Beispiel

import torch
import torch.nn as nn

# Parameter der bilinearen Schicht
bilinear = nn.Bilinear(100, 100, 50)

print("Anzahl der Parameter:", sum(p.numel() for p in bilinear.parameters()))
print("Gewichtsform:", bilinear.weight.shape)  # (50, 100, 100)

Anwendungsfälle

  • Merkmalsfusion: Multimodal
  • Aufmerksamkeitsmechanismus
  • Interaktionsmodellierung

Hinweis: Die bilineare Schicht hat eine große Anzahl von Parametern; mit Vorsicht verwenden.


PyTorch torch.nn 参考手册PyTorch torch.nn Referenzhandbuch

Andere Erweiterungen