Is it possible to assign a random seed for BatchSampler and SubsetRandomSampler? I am using a generator function (yields a generator object instead of returning it, as storing the data in memory turned out to be a lot slower). This function has to be called twice, while it is expected to return the same output.
I did my own random sampler which I can call set_seed() on every time I want to change the order of sampled data. If I’d want the same data twice, I’d call set_seed() after the second time I had read the data. Perhaps this could help you create your own sampler. data_source is my dataset.
class RandomSampler(Sampler):
def __init__(self, data_source):
self.data_source = data_source
def set_seed(self):
self.seed = random.randint(0, 2**32 - 1)
def __iter__(self):
n = len(self.data_source)
indexes = list(range(n))
random.Random(self.seed).shuffle(indexes)
return iter(indexes)
def __len__(self):
return len(self.data_source)