(kwargs)
| 83 | balanced=conf.data.dataloader.class_balance) |
| 84 | |
| 85 | def get_models(kwargs): |
| 86 | net = kwargs["network"] |
| 87 | num_class = kwargs["num_class"] |
| 88 | conf = kwargs["conf"] |
| 89 | G, dim = get_model_mme(net, num_class=num_class) |
| 90 | |
| 91 | C2 = ResClassifier_MME(num_classes=2 * num_class, |
| 92 | norm=False, input_size=dim) |
| 93 | C1 = ResClassifier_MME(num_classes=num_class, |
| 94 | norm=False, input_size=dim) |
| 95 | device = torch.device("cuda") |
| 96 | G.to(device) |
| 97 | C1.to(device) |
| 98 | C2.to(device) |
| 99 | |
| 100 | params = [] |
| 101 | if net == "vgg16": |
| 102 | for key, value in dict(G.named_parameters()).items(): |
| 103 | if 'classifier' in key: |
| 104 | params += [{'params': [value], 'lr': conf.train.multi, |
| 105 | 'weight_decay': conf.train.weight_decay}] |
| 106 | |
| 107 | else: |
| 108 | for key, value in dict(G.named_parameters()).items(): |
| 109 | |
| 110 | if 'bias' in key: |
| 111 | params += [{'params': [value], 'lr': conf.train.multi, |
| 112 | 'weight_decay': conf.train.weight_decay}] |
| 113 | else: |
| 114 | params += [{'params': [value], 'lr': conf.train.multi, |
| 115 | 'weight_decay': conf.train.weight_decay}] |
| 116 | opt_g = optim.SGD(params, momentum=conf.train.sgd_momentum, |
| 117 | weight_decay=0.0005, nesterov=True) |
| 118 | opt_c = optim.SGD(list(C1.parameters()) + list(C2.parameters()), lr=1.0, |
| 119 | momentum=conf.train.sgd_momentum, weight_decay=0.0005, |
| 120 | nesterov=True) |
| 121 | |
| 122 | [G, C1, C2], [opt_g, opt_c] = amp.initialize([G, C1, C2], |
| 123 | [opt_g, opt_c], |
| 124 | opt_level="O1") |
| 125 | G = nn.DataParallel(G) |
| 126 | C1 = nn.DataParallel(C1) |
| 127 | C2 = nn.DataParallel(C2) |
| 128 | |
| 129 | param_lr_g = [] |
| 130 | for param_group in opt_g.param_groups: |
| 131 | param_lr_g.append(param_group["lr"]) |
| 132 | param_lr_c = [] |
| 133 | for param_group in opt_c.param_groups: |
| 134 | param_lr_c.append(param_group["lr"]) |
| 135 | |
| 136 | return G, C1, C2, opt_g, opt_c, param_lr_g, param_lr_c |
no test coverage detected