def pred_with_flip(learn, ds_type=DatasetType.Valid, probs=None): # get prediction preds, acts = learn.get_preds(ds_type) preds = preds[:, 1, ...] # add flip to dataset and get prediction learn.data.dl(ds_type).dl.dataset.tfms.append(flip_lr()) preds_lr, acts = learn.get_preds(ds_type) del learn.data.dl(ds_type).dl.dataset.tfms[-1] preds_lr = preds_lr[:, 1, ...] acts = acts.squeeze() preds = 0.5 * (preds + torch.flip(preds_lr, [-1])) del preds_lr gc.collect() torch.cuda.empty_cache() if probs is not None: for i in range(len(probs)): p = torch.tensor(probs[i], dtype=torch.float).unsqueeze(1).unsqueeze(2) preds[i] = preds[i] * p return preds, acts
def prepare_cifar(config): dataset = build_dataset('cifar_10', val_size=config['val_size']) x_set, y_set = dataset.dataset('train') x_val, y_val = dataset.dataset('val') shape = (-1, 3, 32, 32) x_set = ((x_set - 128) / 128).reshape(shape) x_val = ((x_val - 128) / 128).reshape(shape) train_tfms = [*rand_pad(4, 32), flip_lr(p=0.5)] # Transformation to augment images return x_set, y_set, x_val, y_val, train_tfms
def load_data(): dataset = build_dataset('cifar_10', val_size=val_size) x_train, y_train = dataset.dataset('train') x_val, y_val = dataset.dataset('val') shape = (-1, 3, 32, 32) x_train = ((x_train - 128) / 128).reshape(shape) x_val = ((x_val - 128) / 128).reshape(shape) train_tfms = [*rand_pad(4, 32), flip_lr(p=0.5)] train_ds = ImageArrayDS(x_train, y_train, train_tfms) val_ds = ImageArrayDS(x_val, y_val) data = ImageDataBunch.create(train_ds, val_ds, bs=256) return data, x_train, y_train, x_val, y_val
def prepare_svhn(config): dataset = build_dataset('svhn', val_size=config['val_size']) x_set, y_set = dataset.dataset('train') x_val, y_val = dataset.dataset('val') y_set[y_set == 10] = 0 y_val[y_val == 10] = 0 shape = (-1, 32, 32, 3) x_set = ((x_set - 128) / 128).reshape(shape) x_val = ((x_val - 128) / 128).reshape(shape) x_set = np.rollaxis(x_set, 3, 1) x_val = np.rollaxis(x_val, 3, 1) train_tfms = [*rand_pad(4, 32), flip_lr(p=0.5)] # Transformation to augment images return x_set, y_set, x_val, y_val, train_tfms
def pred_with_flip( learn: fastai.basic_train.Learner, ds_type: fastai.basic_data.DatasetType = DatasetType.Valid, ): # get prediction preds, ys = learn.get_preds(ds_type) preds = preds[:, 1, ...] # add fiip to dataset and get prediction learn.data.dl(ds_type).dl.dataset.tfms.append(flip_lr()) preds_lr, ys = learn.get_preds(ds_type) del learn.data.dl(ds_type).dl.dataset.tfms[-1] preds_lr = preds_lr[:, 1, ...] ys = ys.squeeze() preds = 0.5 * (preds + torch.flip(preds_lr, [-1])) del preds_lr gc.collect() torch.cuda.empty_cache() return preds, ys
pool_size = 200 # Load data dataset = build_dataset('cifar_10', val_size=val_size) x_set, y_set = dataset.dataset('train') x_val, y_val = dataset.dataset('val') shape = (-1, 3, 32, 32) x_set = ((x_set - 128) / 128).reshape(shape) x_val = ((x_val - 128) / 128).reshape(shape) # x_pool, x_train, y_pool, y_train = train_test_split(x_set, y_set, test_size=start_size, stratify=y_set) x_train, y_train = x_set, y_set train_tfms = [*rand_pad(4, 32), flip_lr(p=0.5)] train_ds = ImageArrayDS(x_train, y_train, train_tfms) val_ds = ImageArrayDS(x_val, y_val) data = ImageDataBunch.create(train_ds, val_ds, bs=256) loss_func = torch.nn.CrossEntropyLoss() np.set_printoptions(threshold=sys.maxsize, suppress=True) model = AnotherConv() # model = resnet_masked(pretrained=True) # model = resnet_linear(pretrained=True, dropout_rate=0.5, freeze=False) # learner = Learner(data, model, metrics=accuracy, loss_func=loss_func) # # model_path = "experiments/data/model.pt"