# -------------------------------------------------------- | |
# Reversible Column Networks | |
# Copyright (c) 2022 Megvii Inc. | |
# Licensed under The Apache License 2.0 [see LICENSE for details] | |
# Written by Yuxuan Cai | |
# -------------------------------------------------------- | |
import torch | |
class SubsetRandomSampler(torch.utils.data.Sampler): | |
r"""Samples elements randomly from a given list of indices, without replacement. | |
Arguments: | |
indices (sequence): a sequence of indices | |
""" | |
def __init__(self, indices): | |
self.epoch = 0 | |
self.indices = indices | |
def __iter__(self): | |
return (self.indices[i] for i in torch.randperm(len(self.indices))) | |
def __len__(self): | |
return len(self.indices) | |
def set_epoch(self, epoch): | |
self.epoch = epoch | |