首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在训练深度学习模型时,如何处理大型csv文件?

在训练深度学习模型时,如何处理大型csv文件?
EN

Stack Overflow用户
提问于 2020-01-25 22:03:55
回答 1查看 1.2K关注 0票数 4

我有一个巨大的数据集来训练深度学习模型。它是.csv格式的。它大约是2 2GB,现在,我只是使用pandas将整个数据加载到内存中。

代码语言:javascript
运行
复制
df = pd.read_csv('test.csv')

然后将所有内容提供给keras模型,然后像下面这样训练模型,

代码语言:javascript
运行
复制
model.fit(df, targets)

我想知道在处理大型数据集时,我还有什么其他选择。大约10 GB (或)左右。我没有ram将所有内容加载到内存中,并将其传递给模型。

我能想到的一种方法是以某种方式从.csv文件中获取随机样本/数据子集,并通过数据生成器使用它,但问题是,如果不将所有内容加载到内存中,我找不到任何方法来读取csv文件的子集/样本。

如何在不将所有内容加载到内存的情况下训练模型?如果您有任何解决方案,并且它使用了一些内存,这是可以的。告诉我就行了。

EN

回答 1

Stack Overflow用户

发布于 2020-01-25 22:28:38

我以前没有使用过这个功能,但可能是这样的:

代码语言:javascript
运行
复制
class CsvSequence(Sequence):
    def __init__(self, batchnames):
       self.batchnames = batchnames

    def __len__(self):
       return len(self.batchnames)

    def __getitem__(self, i):
       name = self.batchnames[i]
       X = pd.read_csv(name + '-X.csv')
       Y = pd.read_csv(name + '-Y.csv')
       return X, Y

会起作用的。您需要通过将10 10的文件拆分成10个较小的文件来对数据进行预处理。如果您的split文件每行有一条记录(大多数都是这样),那么Unix CSV实用程序就足够了。

这是一个不完整的示例,说明了如何使用此命令:

代码语言:javascript
运行
复制
seq = CsvSequence([
  'data-1', 'data-2', 'data-3'])

model.fit_generator(seq)

但请注意,您很快就会想要做一些更有效的事情,上面的操作会导致您的CSV文件被多次读取。如果这个加载花费的时间比其他一切加在一起的时间还多,我也不会感到惊讶

一个建议是在训练之前对文件进行预处理,saving them to numpy binary files。二进制文件然后可以mmaped in while loading,这是更有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59909965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档