Search code examples
pythonsortingpytorchdataloaderpytorch-dataloader

How to rearrange the sample order of a torch dataloader?


I have a "torch.utils.data.DataLoader". I want to rearrange the order of the samples. Is it possible?


Solution

  • Yes, you can use torch.utils.data.Subset and specify the indices.

    import numpy as np
    import torch
    from torch.utils.data import DataLoader, Subset, TensorDataset
    
    
    data = np.arange(5) ** 2
    dataset = TensorDataset(torch.tensor(data))
    
    # Subset with entire Dataset in rearranged order
    dataset_ordered = Subset(dataset, indices=[2, 1, 3, 4, 0])
    
    for x in DataLoader(dataset_ordered):
        print(x)
    
    # [tensor([4])]
    # [tensor([1])]
    # [tensor([9])]
    # [tensor([16])]
    # [tensor([0])]