[Solved] Will change in dataset be reflected on dataloader automatically?

The DataLoader seems to use a reference to the Dataset object, so that your regenerate should work.
Here is a small sample code, which works fine for me:

class MyDataset(Dataset):
    def __init__(self, data):
        self.data = data

    def __getitem__(self, index):
        return self.data[index]

    def __len__(self):
        return len(self.data)

    def regenerate(self):
        self.data = torch.ones(3, 1).float()


data = torch.zeros(3, 1).float()
dataset = MyDataset(data)
print dataset[0] # should output 0

data_loader = DataLoader(dataset)

for d in data_loader:
    print d

dataset.regenerate()
print dataset[0] # should output 1

for d in data_loader:
    print d
6 Likes