【问题标题】:What is an efficient way to read and store input data from multiple files in python?在 python 中从多个文件读取和存储输入数据的有效方法是什么?
【发布时间】:2020-03-15 22:07:56
【问题描述】:
我想在 python 中为 8000 个数据样本训练一个分类器(使用 sklearn 或 pytorch 库)。但是,每个数据都是存储在 .wav 文件中的时间序列。
我是否必须首先循环读取所有 8000 个文件并将它们存储在一个大文件中,然后每次我想训练分类器时读取那个大文件?或者对于这种情况有更有效的方法?
【问题讨论】:
标签:
python
database
time-series
pytorch
【解决方案1】:
不,您不需要拥有一个大文件。
在某些时候,您可能缺乏 GPU 内存(整体内存)。
您需要的是延迟加载。
在 PyTorch 中,您有 Dataset 和 DataLoader 类。
Dataset 只需要实现两个方法。
class Dataset(object):
def __getitem__(self, index):
raise NotImplementedError
def __len__(self):
raise NotImplementedError
DataLoader 类可以为您提供单批数据。如果批量大小为 64 (bs=64),这意味着一次有 64 个 .wav 文件。因此,您将指示DataLoader 从一次加载 bs 数据。这是延迟加载。