python-3.x - Pytorch DataLoader 多数据源
问题描述
我正在尝试使用 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
数据源为50块下root_dir = ~/Documents/blocks/
我将它们拆分并避免之前直接组合它们,因为这是一个非常大的数据集。
如何将它们加载到单个数据加载器中?
解决方案
因为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
.
推荐阅读
- android - requestSingleUpdate 不适用于奥利奥
- sql - SQL 域错误:列不存在,设置默认值
- c# - 为什么通话模棱两可?'Task.Run(Action)' 和 'Task.Run(Func
)' - javascript - 未捕获的错误:无法解析 CountdownComponent 的所有参数:(?)
- android - 无法使用使用 kotlin 的改造 android 发布我的数据
- numpy - scipy binned statistcs 未来警告
- php - PHP 动态更新日期
- android - 如何同时移动多个标记
- php - Jquery排序php未排序数组
- swift - 如何快速裁剪图像