def main(): data = PetsDataset("/home/helmuth/dlvc/cifar-10-batches-py", Subset.TRAINING) # ops chain op = ops.chain([ ops.vectorize(), ops.type_cast(np.float32), ops.add(-127.5), ops.mul(1/127.5), ]) # batch generator #1 bg1 = BatchGenerator(data, len(data), False) assert(len(bg1) == 1) # batch generator #2 bg2 = BatchGenerator(data, 500, False, op) assert(len(bg2) == 16) # first batch cnt = 0 for batch in bg2: cnt += 1 if cnt < 16: assert(batch.data.shape == (500, 3072)) assert(batch.labels.shape == (500,)) assert(batch.data.dtype == np.float32) assert(np.issubdtype(batch.labels.dtype, np.integer)) if cnt == 1: print("First batch, first sample, not shuffled") print(batch.data[0]) # batch generator #3 bg3 = BatchGenerator(data, 500, True, op) # run 5 times through first sample of shuffled batch generator for i in range(5): it = iter(bg3) print("First batch, first sample, shuffled") print(next(it).data[0])
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 set_parameter(model, freeze_parameters): if freeze_parameters: for param in model.parameters(): 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() ])
from dlvc.test import Accuracy from dlvc.datasets.pets import PetsDataset from dlvc.dataset import Subset import dlvc.ops as ops 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
from dlvc.datasets.pets import PetsDataset from dlvc.models.pytorch import CnnClassifier from dlvc.batches import BatchGenerator from dlvc.test import Accuracy from dlvc.dataset import Subset import dlvc.ops as ops np.random.seed(0) pets_train = PetsDataset("../cifar-10-batches-py/", Subset.TRAINING) 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() ]) reverse_op = ops.chain([ ops.chw2hwc(), ops.mul(127.5), ops.add(127.5), ops.type_cast(np.uint8), ]) train_batches = BatchGenerator(pets_train, 100, False, op)