Hi,
I create training, validation and testing data loaders for MNIST as follows:
train_set = datasets.MNIST(root=data_root, train=True, transform=transform_train, download=True)
valid_set = datasets.MNIST(root=data_root, train=True, transform=transform_test, download=False)
test_set = datasets.MNIST(root=data_root, train=False, transform=transform_test, download=False)
# Split training into train and validation
train_size = 600;
val_size = 59400;
indices = torch.randperm(len(train_set))
train_indices = indices[:len(indices)-valid_size][:train_size or None]
valid_indices = indices[len(indices)-valid_size:] if valid_size else None
train_loader = torch.utils.data.DataLoader(train_set, batch_size=batch_size,
sampler=SubsetRandomSampler(train_indices), **kwargs)
test_loader = torch.utils.data.DataLoader(test_set, batch_size=batch_size, **kwargs)
if valid_size:
valid_loader = torch.utils.data.DataLoader(valid_set, batch_size=batch_size,
sampler=SubsetRandomSampler(valid_indices), **kwargs)
else:
valid_loader = None
Now what I would like to do is to transform the training data and then add the transformed data to the existing training data to form a new training set, somehow like this:
# Now transform the training data and add the new transformed data to existing training data
for data, target in train_loader:
t_ims = ut.transform_ims(data.numpy(), [parameters])
t_data = torch.from_numpy(t_ims)
# Concatenate
data = [data, t_data]
target = [target, target]
# Set new training data
train_loader.data = data
train_loader.target = target
Could you please tell me how to do that? I find the structure of dataloader in PyTorch is really difficult to understand
Thank you very much for your help!!