首页 > 解决方案 > 从 PyTorch DataLoader 获取单个随机示例

问题描述

如何从 PyTorch 获得单个随机示例DataLoader

如果我DataLoader给出了多个图像和标签的 minbatch,我如何获得单个随机图像和标签?

请注意,我不想要每个 minibatch 一个图像和标签,我想要一个示例。

标签: pythonpytorch

解决方案


如果你DataLoader是这样的:

test_loader = DataLoader(image_datasets['val'], batch_size=batch_size, shuffle=True)

它为您提供了一批 size batch_size,您可以通过直接索引该批次来挑选一个随机示例:

for test_images, test_labels in test_loader:  
    sample_image = test_images[0]    # Reshape them according to your needs.
    sample_label = test_labels[0]

替代解决方案

  1. 您可以使用RandomSampler来获取随机样本。

  2. batch_size在 DataLoader 中使用1。

  3. 直接从您的 DataSet 中抽取样本,如下所示:

     mnist_test = datasets.MNIST('../MNIST/', train=False, transform=transform)
    

    现在使用这个数据集来采样:

     for image, label in mnist_test:
          # do something with image and other attributes
    
  4. (可能是最好的)这里

     inputs, classes = next(iter(dataloader))   
    

推荐阅读