繁体   English   中英

数据加载器上的 pytorch 子集减少数据数量

[英]pytorch subset on dataloader decrease number of data

我正在使用 random_split()

dataset_train, dataset_valid = random_split(dataset, [int(len(dataset) * 0.8), int(len(dataset) * 0.2+1)]) 

len(dataset_train) 是 1026 并且 len(dataset_valid) 是 257 但是将这两个变量放入 dataloader 减少数据数量

loader_train = DataLoader(dataset_train, batch_size=batch_size, shuffle=True, num_workers=0)
loader_val = DataLoader(dataset_valid, batch_size=batch_size, shuffle=True, num_workers=0)
print (len(loader_train))
print (len(loader_val))

output 是:

257, 65

我不知道为什么要减小数据集的大小。 请任何帮助。 谢谢。

您可以使用data.Subset作为data.Dataset实例的包装器。 您需要提供要保留在构造数据集中的生成器或索引列表

  1. 这是一个最小的设置示例:

     >>> dataset_train = data.TensorDataset(torch.arange(100))
  2. 通过包装dataset_train构造子集:

     >>> subset = data.Subset(ds, range(10)) # will select the first 10 of dataset_train
  3. 最后构建你的数据加载器:

     >>> loader_train = data.DataLoader(subset, batch_size=2)

作为一个例子,这里是loader_train

>>> for x in dl:
...    print(x)
[tensor([0, 1])]
[tensor([2, 3])]
[tensor([4, 5])]
[tensor([6, 7])]
[tensor([8, 9])]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM