- 连接(Concatenation)
将两个嵌入向量直接连接起来,形成一个新的更长的向量。
import torch
embedding1 = torch.tensor([1.0, 2.0, 3.0])
embedding2 = torch.tensor([4.0, 5.0, 6.0])
fused_embedding = torch.cat((embedding1, embedding2), dim=0)
print(fused_embedding)
- 加法(Addition)
将两个嵌入向量逐元素相加,形成一个新的向量。要求两个嵌入向量的维度相同。
import torch
embedding1 = torch.tensor([1.0, 2.0, 3.0])
embedding2 = torch.tensor([4.0, 5.0, 6.0])
fused_embedding = embedding1 + embedding2
print(fused_embedding)
- 平均(Average)
将两个嵌入向量逐元素平均,形成一个新的向量。要求两个嵌入向量的维度相同。
import torch
embedding1 = torch.tensor([1.0, 2.0, 3.0])
embedding2 = torch.tensor([4.0, 5.0, 6.0])
fused_embedding = (embedding1 + embedding2) / 2
print(fused_embedding)
- 乘法(Element-wise Multiplication)
将两个嵌入向量逐元素相乘,形成一个新的向量。要求两个嵌入向量的维度相同。
import torch
embedding1 = torch.tensor([1.0, 2.0, 3.0])
embedding2 = torch.tensor([4.0, 5.0, 6.0])
fused_embedding = embedding1 * embedding2
print(fused_embedding)
- 门控机制(Gated Mechanism)
使用一个门控机制(如门控循环单元 GRU)来融合两个嵌入向量。
import torch
import torch.nn as nn
embedding1 = torch.tensor([[1.0, 2.0, 3.0]])
embedding2 = torch.tensor([[4.0, 5.0, 6.0]])
gru = nn.GRU(input_size=3, hidden_size=3, batch_first=True)
h0 = torch.zeros(1, 1, 3)
_, fused_embedding = gru(embedding1.unsqueeze(0), h0)
print(fused_embedding.squeeze(0))
- 注意力机制(Attention Mechanism)
使用注意力机制来融合两个嵌入向量。
import torch
import torch.nn.functional as F
embedding1 = torch.tensor([[1.0, 2.0, 3.0]])
embedding2 = torch.tensor([[4.0, 5.0, 6.0]])
attention_weights = F.softmax(torch.tensor([0.5, 0.5]), dim=0)
fused_embedding = attention_weights[0] * embedding1 + attention_weights[1] * embedding2
print(fused_embedding)
- 线性变换(Linear Transformation)
通过一个线性层将两个嵌入向量变换并融合。
import torch
import torch.nn as nn
embedding1 = torch.tensor([1.0, 2.0, 3.0])
embedding2 = torch.tensor([4.0, 5.0, 6.0])
linear = nn.Linear(6, 3)
concatenated_embedding = torch.cat((embedding1, embedding2), dim=0)
fused_embedding = linear(concatenated_embedding)
print(fused_embedding)