示例#1
0
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])
示例#2
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 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)
示例#4
0
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()
    ])

batchGenerator_training = BatchGenerator(pets_training,
示例#5
0
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
import numpy as np

from dlvc.dataset import Subset
from dlvc.datasets.pets import PetsDataset
from dlvc import ops, batches

dataset = PetsDataset('../data/cifar-10-batches-py', Subset.TRAINING)

op = ops.chain([ops.mul(1 / 255), ops.type_cast(np.float32)])

batch_generator = batches.BatchGenerator(dataset, 7959, True, op)

training_images = []

for batch in batch_generator:
    training_images.append(batch.data)

training_images = np.array(training_images, dtype=np.float32)
training_images = training_images.reshape(training_images.shape[1:])

train_mean = np.mean(training_images, axis=(0, 1, 2))
train_std = np.std(training_images, axis=(0, 1, 2))

print(train_mean, train_std)