コード例 #1
0
ファイル: train.py プロジェクト: paperscodes/CAP
        run_manager.save_config(print_info=True)

    # load checkpoints
    if args.base_path!=None:
        weight_path = args.base_path+'/checkpoint/model_best.pth.tar'
    if args.resume:
        run_manager.load_model()
        if args.train and run_manager.best_acc == 0:
            loss, acc1, acc5 = run_manager.validate(is_test=True, return_top5=True)
            run_manager.best_acc = acc1
    elif weight_path!=None and os.path.isfile(weight_path):
        assert net_origin != None, "original network is None"
        net_origin.load_state_dict(torch.load(weight_path)['state_dict'])
        net_origin = net_origin.module
        if args.model == 'resnet18':
            run_manager.reset_model(ResNet_ImageNet(num_classes=run_config.data_provider.n_classes, cfg=eval(args.cfg), depth=18), net_origin.cpu())
        elif args.model == 'resnet34':
            run_manager.reset_model(ResNet_ImageNet(num_classes=run_config.data_provider.n_classes, cfg=eval(args.cfg), depth=34), net_origin.cpu())
        elif args.model == 'resnet50':
            run_manager.reset_model(ResNet_ImageNet(num_classes=run_config.data_provider.n_classes, cfg=eval(args.cfg), depth=50), net_origin.cpu())
        elif args.model == 'mobilenet':
            run_manager.reset_model(MobileNet(num_classes=run_config.data_provider.n_classes, cfg=eval(args.cfg)), net_origin.cpu())
        elif args.model == 'mobilenetv2':
            run_manager.reset_model(MobileNetV2(num_classes=run_config.data_provider.n_classes, cfg=eval(args.cfg)), net_origin.cpu())
        elif args.model == 'vgg':
            run_manager.reset_model(VGG_CIFAR(cfg=eval(args.cfg), cutout=True), net_origin.cpu())
        elif args.model == 'resnet56':
            run_manager.reset_model(ResNet_CIFAR(cfg=eval(args.cfg), depth=56, num_classes=run_config.data_provider.n_classes, cutout=True), net_origin.cpu())
        elif args.model== 'resnet110':
            run_manager.reset_model(ResNet_CIFAR(cfg=eval(args.cfg), depth=110, num_classes=run_config.data_provider.n_classes, cutout=True), net_origin.cpu())
    else:
コード例 #2
0
                                  'prune')
        current_best = np.array(fitness).max()
        if current_best > best_acc:
            best_acc = current_best
            best_cfg = cfgs[np.array(fitness).argsort()[-1]]
            best_cfg_raw = populations[np.array(fitness).argsort()[-1]]
        if args.local_rank == 0:
            run_manager.write_log('best cfg: ' + str(best_cfg), 'prune')
            run_manager.write_log('best val acc: ' + str(best_acc), 'prune')
    fitness = best_acc
    cfg = list(best_cfg)

    # final fine-tuning
    if args.model == 'resnet18':
        run_manager.reset_model(
            ResNet_ImageNet(num_classes=1000, cfg=cfg, depth=18),
            net_origin.cpu())
    elif args.model == 'resnet34':
        run_manager.reset_model(
            ResNet_ImageNet(num_classes=1000, cfg=cfg, depth=34),
            net_origin.cpu())
    elif args.model == 'resnet50':
        run_manager.reset_model(
            ResNet_ImageNet(num_classes=1000, cfg=cfg, depth=50),
            net_origin.cpu())
    elif args.model == 'mobilenet':
        run_manager.reset_model(MobileNet(num_classes=1000, cfg=cfg),
                                net_origin.cpu())
    elif args.model == 'mobilenetv2':
        run_manager.reset_model(MobileNetV2(num_classes=1000, cfg=cfg),
                                net_origin.cpu())