如何在 Pytorch 中处理大型 JSON 文件?

Sha*_*ana 1 time-series deep-learning pytorch

我正在研究时间序列问题。不同的训练时间序列数据存储在一个 30GB 的大型 JSON 文件中。在 tensorflow 中,我知道如何使用 TF 记录。pytorch 中是否有类似的方法?

rom*_*man 5

我想IterableDataset( docs ) 是你所需要的,因为:

  1. 你可能想在没有随机访问的情况下遍历文件;
  2. jsons 中的样本数不是预先计算的。

我做了一个最小使用示例,假设数据集文件的每一行都是一个 json 本身,但您可以更改逻辑。

import json
from torch.utils.data import DataLoader, IterableDataset


class JsonDataset(IterableDataset):
    def __init__(self, files):
        self.files = files

    def __iter__(self):
        for json_file in self.files:
            with open(json_file) as f:
                for sample_line in f:
                    sample = json.loads(sample_line)
                    yield sample['x'], sample['time'], ...

...

dataset = JsonDataset(['data/1.json', 'data/2.json', ...])
dataloader = DataLoader(dataset, batch_size=32)

for batch in dataloader:
    y = model(batch)
Run Code Online (Sandbox Code Playgroud)

  • 如果工人多了,就会出现问题。每个工作人员都会开始读取同一个文件,从而导致重复。 (2认同)