import torch import torch.nn as nn from torchvision import models class BoneAgeModel(nn.Module): def __init__(self): super(BoneAgeModel, self).__init__() self.backbone = models.efficientnet_b4(weights=None) num_features = self.backbone.classifier[1].in_features self.backbone.classifier = nn.Identity() self.gender_fc = nn.Linear(1, 32) self.fc = nn.Sequential( nn.Linear(num_features + 32, 512), nn.ReLU(), nn.Dropout(0.3), nn.Linear(512, 128), nn.ReLU(), nn.Linear(128, 1) ) def forward(self, image, gender): img_features = self.backbone(image) gender_features = torch.relu(self.gender_fc(gender.unsqueeze(1))) combined = torch.cat([img_features, gender_features], dim=1) return self.fc(combined).squeeze(1)