Example #1
0
def getTestDataset(test_dataset='cifar10', batch_size=32):
    if test_dataset == 'Imagenet':
        testFolder = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                  '../val/')
        print('testFolder', testFolder)
        Imagenet = datasets.ImageNet12(trainFolder=None, testFolder=testFolder)
        test_loader = Imagenet.getTestLoader(batch_size=batch_size,
                                             num_workers=0)
    else:
        datasets.BASE_DATA_FOLDER = os.path.join(
            os.path.dirname(os.path.abspath(__file__)), '../')
        try:
            os.mkdir(datasets.BASE_DATA_FOLDER)
        except:
            pass
        cifar10 = datasets.CIFAR10()
        test_loader = cifar10.getTestLoader(batch_size=batch_size,
                                            num_workers=0)
    return test_loader
try:
    os.mkdir(imageNet12modelsFolder)
except:
    pass

print('Batch size: {}'.format(batch_size))

if batch_size % NUM_GPUS != 0:
    raise ValueError(
        'Batch size: {} must be a multiple of the number of gpus:{}'.format(
            batch_size, NUM_GPUS))

imageNet12 = datasets.ImageNet12('...',
                                 '...',
                                 type_of_data_augmentation='extended',
                                 already_scaled=False,
                                 pin_memory=True)

train_loader = imageNet12.getTrainLoader(batch_size, shuffle=True)
test_loader = imageNet12.getTestLoader(batch_size, shuffle=False)

# # Teacher model
alexnet_unquantized = torchvision.models.alexnet(pretrained=True)
if USE_CUDA:
    alexnet_unquantized = alexnet_unquantized.cuda()
if NUM_GPUS > 1:
    alexnet_unquantized = torch.nn.parallel.DataParallel(alexnet_unquantized)

#Train a wide-resNet with quantized distillation
quant_distilled_model_name = 'alexnet_quant_distilled{}bits'.format(NUM_BITS)
Example #3
0
    def __init__(self, args):

        self.criterion = nn.CrossEntropyLoss().cuda()
        self.init_channels = args.init_channels
        self.num_blocks = args.num_blocks
        self.momentum = args.momentum
        self.weight_decay = args.weight_decay
        self.learning_rate = args.learning_rate
        self.grad_clip = args.grad_clip
        self.epochs = args.epochs_step
        #self.device         = torch.device("cuda:"+args.gpu[0])
        self.save = args.save
        self.report_freq = args.report_freq
        self.args = args
        self.target_param = 0.2  # mystery  改成初始化模型的平均值
        self.bucket_size = 256
        num_workers = 1
        pin_memory = False
        shuffle = True
        self.share_params = {}
        self.search_space = args.search_space

        if args.dataset == 'cifar10':
            root = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                args.data)
            print(root)
            train_transform, valid_transform = utils._data_transforms_cifar10(
                args)
            train_data = dset.CIFAR10(root=root,
                                      train=True,
                                      download=False,
                                      transform=train_transform)
            test_data = dset.CIFAR10(root=root,
                                     train=False,
                                     download=False,
                                     transform=valid_transform)

            self.trainloader = torch.utils.data.DataLoader(
                train_data,
                batch_size=args.batch_size,
                shuffle=shuffle,
                num_workers=num_workers,
                pin_memory=pin_memory)
            self.testloader = torch.utils.data.DataLoader(
                test_data,
                batch_size=args.batch_size,
                shuffle=shuffle,
                num_workers=num_workers,
                pin_memory=pin_memory)
        elif args.dataset == 'Imagenet':
            trainFolder = os.path.join(args.data, 'train/')
            testFolder = os.path.join(args.data, 'val/')
            print('testFolder', testFolder)
            Imagenet = datasets.ImageNet12(trainFolder=trainFolder,
                                           testFolder=testFolder)
            self.trainloader = Imagenet.getTrainLoader(
                batch_size=args.batch_size, num_workers=56)
            print('train data done!')
            self.testloader = Imagenet.getTestLoader(
                batch_size=args.batch_size, num_workers=56)
            print('test data done!')
        else:
            raise ValueError('Unknown dataset {}'.format(args.dataset))