gpt4 book ai didi

python - 训练深度学习模型时如何处理大型csv文件?

转载 作者:行者123 更新时间:2023-12-01 15:56:03 25 4
gpt4 key购买 nike

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

df = pd.read_csv('test.csv')

然后将所有内容提供到 keras 模型中,然后像下面这样训练模型,
model.fit(df, targets)

我想知道在处理大型数据集时还有哪些其他选择。像大约 10 GB(或)的东西。我没有 ram 将所有内容加载到内存中并将其传递给模型。

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

如何在不将所有内容加载到内存中的情况下训练模型?如果您有任何解决方案并且它使用一些内存,那没关系。只要让我知道。

最佳答案

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

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

会工作。您需要通过将 10GB 文件拆分为例如 10 个较小的文件来预处理您的数据。 Unix split 如果您的 CSV 文件每行有一条记录(大多数情况下),实用程序可能就足够了

作为如何使用它的不完整示例:
seq = CsvSequence([
'data-1', 'data-2', 'data-3'])

model.fit_generator(seq)

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

一个建议是在训练前预处理文件, saving them to numpy binary files .然后二进制文件可以 mmap ed in while load ing这效率更高。

关于python - 训练深度学习模型时如何处理大型csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59909965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com