def load_dataset(subset: Subset) -> batches.BatchGenerator: dataset = PetsDataset('../data/cifar-10-batches-py', subset) op = ops.chain([ ops.hwc2chw(), ops.add(-127.5), ops.mul(1 / 127.5), ops.type_cast(np.float32) ]) return batches.BatchGenerator(dataset, 128, True, op)
def load_dataset(subset: Subset, augment=False) -> batches.BatchGenerator: dataset = PetsDataset('../data/cifar-10-batches-py', subset) ops_list = [] if augment: ops_list += [ops.hflip(), ops.rcrop(32, 12, 'constant')] ops_list += [ ops.mul(1 / 255), ops.type_cast(np.float32), # Imagenet: # ops.normalize( mean=np.array([0.485, 0.456, 0.406]), # std=np.array([0.229, 0.224, 0.225])), # Cifar-10: ops.normalize(mean=np.array([0.41477802, 0.45935813, 0.49693552]), std=np.array([0.25241926, 0.24699265, 0.25279155])), ops.hwc2chw() ] op = ops.chain(ops_list) return batches.BatchGenerator(dataset, 128, True, op)
param.requires_grad = False if USE_TRANSFER_LEARNING: # there are two networks to use in transfer learning "resnet" and "alexnet" net = initialize_transfer_learning_model("resnet", NUM_CLASSES, FREEZE_CNN_PARAMETERS) net, input_size = net pad_mode_for_resizing = 'constant' op_chain = chain([ type_cast(dtype=np.float32), add(-127.5), mul(1 / 127.5), rcrop(25, 2, 'median'), resize(input_size, pad_mode_for_resizing), hwc2chw() ]) else: net = CatDogNet() op_chain = chain([ type_cast(dtype=np.float32), add(-127.5), mul(1 / 127.5), rcrop(25, 2, 'median'), hwc2chw() ]) batchGenerator_training = BatchGenerator(pets_training, BATCH_SIZE, shuffle=True, op=op_chain)
np.random.seed(0) torch.manual_seed(0) DATA_PATH = "../cifar-10-batches-py/" MODEL_PATH = "best_model.pt" train_data = PetsDataset(DATA_PATH, Subset.TRAINING) val_data = PetsDataset(DATA_PATH, Subset.VALIDATION) op = ops.chain([ ops.type_cast(np.float32), ops.add(-127.5), ops.mul(1 / 127.5), ops.hflip(), ops.rcrop(32, 4, 'constant'), ops.add_noise(), ops.hwc2chw() ]) train_batches = BatchGenerator(train_data, 128, False, op) val_batches = BatchGenerator(val_data, 128, False, op) class Net(nn.Module): def __init__(self, img_size, num_classes): super(Net, self).__init__() self.img_size = img_size # Instantiate the ReLU nonlinearity self.relu = nn.ReLU() # Instantiate two convolutional blocks
NUM_CLASSES = 2 EPOCHS = 500 lr = 0.001 # weight decay 0 in this configuration, in part 3 this is changed wd = 0.0 pets_training = PetsDataset(dir, Subset.TRAINING) pets_validation = PetsDataset(dir, Subset.VALIDATION) pets_test = PetsDataset(dir, Subset.TEST) batchGenerator_training = BatchGenerator(pets_training, BATCH_SIZE, shuffle=True, op=chain([type_cast(dtype=np.float32), add(-127.5), mul(1 / 127.5), hwc2chw()])) batchGenerator_validation = BatchGenerator(pets_validation, BATCH_SIZE, shuffle=False, op=chain([type_cast(dtype=np.float32), add(-127.5), mul(1 / 127.5), hwc2chw()])) batchGenerator_test = BatchGenerator(pets_test, BATCH_SIZE, shuffle=False, op=chain([type_cast(dtype=np.float32), add(-127.5), mul(1 / 127.5), hwc2chw()])) class CatDogNet(nn.Module): def __init__(self): super(CatDogNet, self).__init__()