Exemple #1
0
    def __init__(self, class_num=62):
        super(res18, self).__init__()
        model_ft = ResNet(BasicBlock, [2, 2, 2, 2])
        self.base_model = nn.Sequential(*list(model_ft.children())[:-3])
        # attention schema
        self.avgpool = nn.AdaptiveAvgPool2d(1)
        self.maxpool = nn.AdaptiveMaxPool2d(1)
        self.sign = nn.Sigmoid()
        in_plances = 256
        ratio = 8
        self.a_fc1 = nn.Conv2d(in_plances,in_plances//ratio,1,bias=False)
        self.a_relu = nn.ReLU()
        self.a_fc2 = nn.Conv2d(in_plances//ratio, in_plances, 1, bias=False)

        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.max_pool = nn.AdaptiveMaxPool2d(1)
        self.reduce_layer = nn.Conv2d(512, 256, 1)

        # self.classifier = ClassBlock(512, 1024)
        self.fc1 = nn.Sequential(nn.Dropout(0.5),
                                 nn.Linear(256, class_num))
        self.fc2 = nn.Sequential(nn.Dropout(0.5),
                                 nn.Linear(256, class_num))
        self.fc3 = nn.Sequential(nn.Dropout(0.5),
                                 nn.Linear(256, class_num))
        self.fc4 = nn.Sequential(nn.Dropout(0.5),
                                 nn.Linear(256, class_num))
        return out


def se_resnet50(num_classes=1_000, pretrained=True):
    """Constructs a ResNet-50 model.
    Args:
        pretrained (bool): If True, returns a model pre-trained on ImageNet
    """
    model = ResNet(SEBottleneck, [3, 4, 6, 3], num_classes=num_classes)
    model.avgpool = nn.AdaptiveAvgPool2d(1)
    if pretrained:
        model.load_state_dict(
            load_state_dict_from_url(
                "https://github.com/moskomule/senet.pytorch/releases/download/archive/seresnet50-60a8950a85b2b.pkl"
            ))
    for child in model.children():
        for param in child.parameters():
            param.requires_grad = False

    return model


class vae_fc(nn.Module):
    def __init__(self):
        super(vae_fc, self).__init__()
        self.fc1 = nn.Linear(1000, 512)
        self.fc21 = nn.Linear(512, 256)
        self.fc22 = nn.Linear(512, 256)

    def encode(self, x):
        h1 = F.relu(self.fc1(x))