How to handle multimodal data in PyTorch?

There are typically two methods for handling multimodal data in PyTorch.

  1. A series of layers in PyTorch.
import torch
import torch.nn as nn

class MultiModalModel(nn.Module):
    def __init__(self, input_size1, input_size2, hidden_size):
        super(MultiModalModel, self).__init__()
        self.fc1 = nn.Linear(input_size1, hidden_size)
        self.fc2 = nn.Linear(input_size2, hidden_size)
        self.fc3 = nn.Linear(hidden_size * 2, 1)  # 合并后特征维度

    def forward(self, x1, x2):
        out1 = self.fc1(x1)
        out2 = self.fc2(x2)
        out = torch.cat((out1, out2), dim=1)
        out = self.fc3(out)
        return out

# 使用示例
model = MultiModalModel(input_size1=10, input_size2=20, hidden_size=16)
x1 = torch.randn(32, 10)
x2 = torch.randn(32, 20)
output = model(x1, x2)
  1. models from torchvision
import torch
import torch.nn as nn
import torchvision.models as models

class MultiChannelModel(nn.Module):
    def __init__(self):
        super(MultiChannelModel, self).__init__()
        self.resnet = models.resnet18(pretrained=True)
        in_features = self.resnet.fc.in_features
        self.resnet.fc = nn.Linear(in_features * 2, 1)  # 合并后特征维度

    def forward(self, x):
        out = self.resnet(x)
        return out

# 使用示例
model = MultiChannelModel()
x1 = torch.randn(32, 3, 224, 224)  # 图像数据
x2 = torch.randn(32, 300)          # 文本数据
x = torch.cat((x1, x2), dim=1)     # 拼接成多通道输入
output = model(x)

The above are two common methods for dealing with multimodal data, and in practical applications, the appropriate method can be chosen based on the specific situation.

广告
Closing in 10 seconds
bannerAds