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)
Example #2
0
        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)