def main(): args = get_arguments() if not os.path.isdir(args.output_dir): os.makedirs(args.output_dir) face_dataset = ImageData(root_dir=args.input_dir,\ transform=transforms.Compose([PreprocessData(args.scale_size, args.crop_size)])) dataloader = DataLoader(face_dataset, batch_size=args.batch_size, shuffle=True) ########### setup network ############## net = ConvNet(3, args.K).to(device) #----------Weight Initialization--------------- def init_weights(m): if type(m) == nn.Conv2d: nn.init.normal_(m.weight, 0, 0.02) net.apply(init_weights) #--------------------------------------------- summary(net, (3, 128, 128)) # for name, param in net.named_parameters(): # if param.requires_grad: # print(name, param.data.size(), type(param)) optimizer = torch.optim.Adam(net.parameters(), lr=args.learning_rate, weight_decay=args.weight_decay) # ######################################### print() train(dataloader, net, optimizer, args)
optimizer = opt_class(param_dict.values(), lr=args.lr_base, **opt_args) print(net) print(param_dict.keys()) ############# # train ############# # load snapshot start_iter = load_snapshot(net, args.param_prefix) if start_iter: print('==> Load model from {0}{1}'.format(args.param_prefix, start_iter - 1)) else: start_iter = 0 net.apply(weights_init) print('==> Random init') # lr scheduler if 'rot' in args.kernel_mode: lr_schedulers = [ StepLR(optimizer.optim0, step_size=args.lr_step_size, gamma=0.1, last_epoch=-1), StepLR(optimizer.optim1, step_size=args.lr_step_size, gamma=0.3, last_epoch=-1), ] lr_schedulers[0].step(start_iter - 1)