【发布时间】:2020-05-11 13:53:49
【问题描述】:
我有一个用于训练深度学习模型的庞大数据集。它采用 .csv 格式。它大约 2GB,现在,我只是用 pandas 将整个数据加载到内存中。
df = pd.read_csv('test.csv')
然后将所有内容提供到 keras 模型中,然后像下面这样训练模型,
model.fit(df, targets)
我想知道在处理大型数据集时还有哪些其他选择。像大约 10 GB(或)的东西。我没有内存来将所有内容加载到内存中并将其传递给模型。
我能想到的一种方法是以某种方式从 .csv 文件中获取数据的随机样本/子集,并通过数据生成器使用它,但问题是我找不到任何方法来读取csv 文件,无需将所有内容加载到内存中。
如何在不将所有内容加载到内存的情况下训练模型?如果您有任何解决方案并且它使用一些内存,那也没关系。请告诉我。
【问题讨论】:
-
@aws_apprentice 只有这样吗?
-
文档提到你可以提供一个 generator 作为你的
x参数,所以这是一个选项,尽管在后台我假设keras无论如何都会加载它?这就是文档所说的,A generator or keras.utils.Sequence returning (inputs, targets) or (inputs, targets, sample weights). -
它最终必须全部加载/处理,但如果您使用
Sequence,它可以随时卸载较早的部分。 CSV 文件不适合这个(随机访问很困难),我建议将一个大的 CSV 文件分成几个较小的文件,或者使用其他文件格式 -
参见例如stanford.edu/~shervine/blog/…@dominicXDhough 我认为这更多是关于 keras 而不是 CSV/Pandas 处理
-
如果 Keras 中的这个模型支持在线学习,那可能会有所帮助。此外,如果它可以采用非熊猫输入,您可能会节省大量内存,避免构建 DataFrame。
标签: python tensorflow keras deep-learning