Fonction torch.nn.Bilinear de PyTorch

PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch


torch.nn.BilinearC'est une couche bilinéaire dans PyTorch.

Elle effectue une transformation bilinéaire sur deux entrées, couramment utilisée pour la fusion de caractéristiques.

Définition de fonction

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

Formule

y = x1 * W * x2 + b

Exemple d'utilisation

Exemple 1 : Utilisation de base

Exemple

import torch
import torch.nn as nn

# Couche bilinéaire : deux entrées de dimension 100 -> sortie de dimension 50
bilinear = nn.Bilinear(100, 100, 50)

# Deux entrées
x1 = torch.randn(4, 100)
x2 = torch.randn(4, 100)

output = bilinear(x1, x2)

print("Entrée 1 :", x1.shape)
print("Entrée 2 :", x2.shape)
print("Sortie :", output.shape)

Exemple 2 : Fusion de caractéristiques

Exemple

import torch
import torch.nn as nn

# Fusion de caractéristiques bilinéaire (similaire à 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("Sortie de fusion :", output.shape)

Exemple 3 : Nombre de paramètres

Exemple

import torch
import torch.nn as nn

# Paramètres de la couche bilinéaire
bilinear = nn.Bilinear(100, 100, 50)

print("Nombre de paramètres :", sum(p.numel() for p in bilinear.parameters()))
print("Forme du poids :", bilinear.weight.shape)  # (50, 100, 100)

Cas d'utilisation

  • Fusion de caractéristiques: multimodal
  • Mécanisme d'attention
  • Modélisation des interactions

Remarque : la couche bilinéaire a un grand nombre de paramètres ; à utiliser avec prudence.


PyTorch torch.nn 参考手册Manuel de référence torch.nn de PyTorch

Autres extensions