我正在尝试使用 Pytorch 数据加载器来定义自己的数据集,但我不确定如何加载多个数据源:
我当前的代码:
class MultipleSourceDataSet(Dataset):
def __init__ (self, json_file, root_dir, transform = None):
with open(root_dir + 'block0.json') as f:
self.result = torch.Tensor(json.load(f))
self.root_dir = root_dir
self.transform = transform
def __len__(self):
return len(self.result[0])
def __getitem__ (self):
None
数据源为root_dir = ~/Documents/blocks/下的50个 block
我将它们分开并避免之前直接组合它们,因为这是一个非常大的数据集。
如何将它们加载到单个数据加载器中?
最佳答案
对于DataLoader
您需要有一个 Dataset
,您的问题是您有多个 'json'
文件,并且您只知道如何从中创建一个 Dataset
每个 'json'
分别。
在这种情况下你可以做的是使用 ConcatDataset
包含您创建的所有单'json'
数据集:
import os
import torch.utils.data as data
class SingeJsonDataset(data.Dataset):
# implement a single json dataset here...
list_of_datasets = []
for j in os.path.listdir(root_dir):
if not j.endswith('.json'):
continue # skip non-json files
list_of_datasets.append(SingeJsonDataset(json_file=j, root_dir=root_dir, transform=None))
# once all single json datasets are created you can concat them into a single one:
multiple_json_dataset = data.ConcatDataset(list_of_datasets)
现在您可以将连接的数据集输入到 data.DataLoader
中。
关于python-3.x - Pytorch DataLoader 多数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477861/