testset = ImageFolderWithPaths(root="path/to/your/Image_Data/Test/", transform=transform)
subset_indices = [0] # select your indices here as a list
subset = torch.utils.data.Subset(testset, subset_indices)
testloader_subset = torch.utils.data.DataLoader(subset, batch_size=1, num_workers=0, shuffle=False)
# Recovers the original `dataset` from the `dataloader`
dataset = dataloader.dataset
n_samples = len(dataset)
# Get a random sample
random_index = int(numpy.random.random()*n_samples)
single_example = dataset[random_index]
7条答案
按热度按时间smtd7mpg1#
如果你的
DataLoader
是这样的:字符串
它给你一个大小为
batch_size
的批,你可以通过直接索引这个批来挑选一个随机的例子:型
备选方案
1.可以使用RandomSampler获取随机样本。
1.在DataLoader中使用1的
batch_size
。1.直接从数据集中提取样本,如下所示:
型
现在使用此数据集采集样本:
型
1.**(可能是最好的)**看这里:
型
ki1q1bka2#
如果你想从Trainloader/Testloader中选择特定的图像,你应该从master中查看
Subset
函数:下面是一个如何使用它的示例:
字符串
这样您就可以使用一个图像和标签。但是,你当然可以在subset_indices中使用不止一个索引。
如果您想使用DataFolder中的特定图像,可以使用dataset.sample并构建一个字典来获取您想要使用的图像的索引。
ltskdhd13#
(This答案是补充@parthagar答案的备选3)
迭代
dataset
不会**返回“random”示例,您应该用途:字符串
tp5buhyn4#
TL;DR:
从
DataLoader
获取单个示例的一般形式为:字符串
特别是对于所问的问题,其中返回了minbatches的图像和标签:
型
可能有趣的信息:
要从
DataLoader
获取单个小批,请用途:型
当运行类似
for images, labels in dataloader:
的代码时,底层发生的是通过iter(dataloader)
创建迭代器,然后在每次循环执行时调用迭代器的.next()
。要从
DataLoader
(返回图像和标签)获取单个图像,请用途:型
这与执行以下操作相同:
型
goqiplq25#
从
DataLoader
随机抽取样本假设
DataLoader(shuffle=True)
用于其构造,可以从DataLoader中随机抽取一个示例:字符串
从
Dataset
中随机抽取样本如果不是这种情况,您可以从数据集中绘制一个随机示例:
型
q7solyqu6#
获取随机样本的关键是为
DataLoader
设置shuffle=True
,获取单个图像的关键是将批量大小设置为1。下面是loading the mnist dataset之后的例子。
字符串
的数据
vd2z7a6w7#
你可以简单地将trainloader转换为iterable,然后通过编写以下代码获取下一个批处理
字符串
这里有一个例子
型
参考号:https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html