Función PyTorch torch.nn.Bilinear
Manual de referencia de PyTorch torch.nn
torch.nn.BilinearEs una capa bilineal en PyTorch.
Traducción: Es una capa bilineal en PyTorch.
Realiza una transformación bilineal sobre dos entradas, comúnmente utilizada para la fusión de características.
Definición de la función
torch.nn.Bilinear(in1_features, out_features, out_features, bias=True)
Fórmula
y = x1 * W * x2 + b
Ejemplo de uso
Ejemplo 1: Uso básico Traducción: Ejemplo 1: Uso básico
Ejemplo
import torch
import torch.nn as nn
# Capa bilineal: dos entradas de 100 dimensiones -> salida de 50 dimensiones
bilinear = nn.Bilinear(100, 100, 50)
# Dos entradas
x1 = torch.randn(4, 100)
x2 = torch.randn(4, 100)
output = bilinear(x1, x2)
print("Entrada 1:", x1.shape)
print("Entrada 2:", x2.shape)
print("Salida:" Traducción: "Salida:", output.shape)
import torch.nn as nn
# Capa bilineal: dos entradas de 100 dimensiones -> salida de 50 dimensiones
bilinear = nn.Bilinear(100, 100, 50)
# Dos entradas
x1 = torch.randn(4, 100)
x2 = torch.randn(4, 100)
output = bilinear(x1, x2)
print("Entrada 1:", x1.shape)
print("Entrada 2:", x2.shape)
print("Salida:" Traducción: "Salida:", output.shape)
Ejemplo 2: Fusión de características
Ejemplo
import torch
import torch.nn as nn
# Fusión de características bilineal (similar a Skip-gram) Traducción: # Fusión de características bilineal (similar a 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("Salida de fusión:", output.shape)
import torch.nn as nn
# Fusión de características bilineal (similar a Skip-gram) Traducción: # Fusión de características bilineal (similar a 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("Salida de fusión:", output.shape)
Ejemplo 3: Número de parámetros
Ejemplo
import torch
import torch.nn as nn
# Parámetros de la capa bilineal
bilinear = nn.Bilinear(100, 100, 50)
print(Traducción: "Número de parámetros:", sum(p.numel() for p in bilinear.parameters()))
print("Forma de los pesos:", bilinear.weight.shape) # (50, 100, 100)
import torch.nn as nn
# Parámetros de la capa bilineal
bilinear = nn.Bilinear(100, 100, 50)
print(Traducción: "Número de parámetros:", sum(p.numel() for p in bilinear.parameters()))
print("Forma de los pesos:", bilinear.weight.shape) # (50, 100, 100)
Escenarios de uso
- Fusión de características Traducción: Fusión de características: Multimodal
- Mecanismo de atención
- Modelado de interacciones Traducción: Modelado de interacciones
Nota: la capa bilineal tiene una gran cantidad de parámetros, úsese con precaución.
Otras extensiones