Ejemplo n.º 1
0
 def __init__(self, num_features):
     super(GRL, self).__init__()
     self.model_fc = model.Resnet50Fc()
     # for param in self.model_fc.parameters():
     #    param.requires_grad=False
     self.bottleneck_layer1 = nn.Linear(num_features, 256)
     self.bottleneck_layer1.weight.data.normal_(0, 0.005)
     self.bottleneck_layer1.bias.data.fill_(0.1)
     self.bottleneck_layer = nn.Sequential(self.bottleneck_layer1,
                                           nn.ReLU(), nn.Dropout(0.5))
     self.classifier_layer = nn.Linear(256, len(dset_classes))
     self.classifier_layer.weight.data.normal_(0, 0.01)
     self.classifier_layer.bias.data.fill_(0.0)
     self.predict_layer = nn.Sequential(self.model_fc,
                                        self.bottleneck_layer,
                                        self.classifier_layer)
     self.ad_layer1 = nn.Linear(256 * len(dset_classes), 1024)
     self.ad_layer2 = nn.Linear(1024, 1024)
     self.ad_layer3 = nn.Linear(1024, 1)
     self.ad_layer1.weight.data.normal_(0, 0.01)
     self.ad_layer2.weight.data.normal_(0, 0.01)
     self.ad_layer3.weight.data.normal_(0, 0.3)
     self.ad_layer1.bias.data.fill_(0.0)
     self.ad_layer2.bias.data.fill_(0.0)
     self.ad_layer3.bias.data.fill_(0.0)
     self.ad_net = nn.Sequential(self.ad_layer1, nn.ReLU(),
                                 nn.Dropout(0.5), self.ad_layer2,
                                 nn.ReLU(), nn.Dropout(0.5),
                                 self.ad_layer3, nn.Sigmoid())
     self.grl = ad.AdversarialLayer(high=1.0)
Ejemplo n.º 2
0
Archivo: PAN.py Proyecto: Jing--Li/PAN
            line_list = line.strip().split(' ')
            fine_coarse_map.append([int(line_list[i]) for i in range(7)])
            line = file_map.readline()

    # network construction
    feature_len = 2048
    # fine-grained feature extractor + fine-grained label predictor
    my_fine_net = fine_net(feature_len)
    my_fine_net = my_fine_net.to(device)
    my_fine_net.train(True)
    # domain discriminator
    my_discriminator = discriminator(256)
    my_discriminator = my_discriminator.to(device)
    my_discriminator.train(True)
    # gradient reversal layer
    my_grl = ad.AdversarialLayer(max_iter=args.max_iteration)
    # coarse-grained feature extractor + coarse-grained label predictor
    my_coarse_extractor = coarse_extractor()
    my_coarse_extractor = my_coarse_extractor.to(device)
    my_coarse_extractor.train(True)
    my_coarse_predictor = []
    for i in range(num_coarse_cate_sel):
        my_coarse_predictor.append(predictor(256, cate_all[i + 1]))
        my_coarse_predictor[i].to(device)
        my_coarse_predictor[i].train(True)

    # criterion and optimizer
    criterion = {
        "classifier": nn.CrossEntropyLoss(),
        "kl_loss": nn.KLDivLoss(size_average=False),
        "adversarial": nn.BCELoss()