torch.utils.data.DataLoader依照mini batch方式取Dataset的数据时的逻辑
dataloader在取数据的时候,是一条一条取的,实际是调用dataset的__getItem__方法,正如torch.utils.data.dataset的源码注释中要求的:dataset需要实现根据传进来的index取数据,如何取是你自己的内在逻辑决定的,然后按照mini batch大小的数据作为一个整体interation返回给enumerate。
shuffle=True时,torch.utils.data.DataLoader内部是调用RandomSampler进行随机取数据的。
RandomSampler中,产生随机数种子,然后得到随机0--dataset size(num_sample)中的int值。
所以 索引就是来自[0, len(dataset)]中的int值,然后传递给__getItem__方法。