python-3.x - Pytorch DataLoader 多数据源

标签 python-3.x image-processing machine-learning deep-learning pytorch

我正在尝试使用 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/

相关文章:

CSS 在服务器上的 django 站点管理中不起作用

Python 你为什么要使用 [ :] over =

python - 在Python中使用callproc调用包含记录集合的存储过程

c++ - 如何使用C编程创建图像数据库?

python - 有没有办法在 PIL 中用黑线勾勒出文本轮廓?

python - 将边界条件应用于 Keras 输出

python - 如何强制决策树在评估时仅使用整数

python - 如何在 python 中使用 gensim 和 word2vec 查找语义相似性

python - 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

c++ - 如何正确使用opencv在图像上使用傅里叶变换对?