If I add a following code to getitem of cifar.py 9 in torchvision,
    def __getitem__(self, index):
        ...
        # doing this so that it is consistent with all other datasets
        # to return a PIL Image
        img = Image.fromarray(img)

        if index == 0:    # outputs a random number for debugging
            print(np.random.uniform(-1, 1))

        if self.transform is not None:
            img = self.transform(img)
        ...

The line print(np.random.uniform(-1, 1)) always outputs the same value for every epoch.
I tried to make my own dataloader without torchvision, but I observed the same issue.
I never called numpy.random.seed().
Interesting thing is, when I tried
kwargs = {'num_workers': 1, 'pin_memory': True} if args.cuda else {}
train_loader = torch.utils.data.DataLoader(
    dataset('../data', train=True, download=True, transform=transform),
    batch_size=args.batch_size, shuffle=True, **kwargs)

for data in enumerate(train_loader):
    numpy.random.uniform(-1, 1)    # This dummy line was intentionally added
    pass

With the dummy line above (the first line in for loop) makes getitem generate non-repetitive values.
Without the line, I get the same value.
Thank you.