在 pytorch 中在非常大的稀疏矩阵上训练神经网络

问题描述 投票:0回答:1

我有一个包含大约 7400 万个观察值的数据集。每个观察结果都由约 1,000 个特征表示,并用最多约 3,200 个二元类进行标记。大多数单独的观察结果标记的类别不超过 10 个,因此标签非常稀疏。目前,标签和特征矩阵以 MatrixMarket 格式存储。

我想在 74m * 1000 输入矩阵上训练神经网络来预测 74m * 3200 标签。然而,这显然不适合记忆。这是我第一次使用这么大的数据集。到目前为止,我能看到的选项包括:

  • 将每组特征和标签分别写入文本文件,并从文件列表中随机采样每个小批量中的项目(似乎效率低下)
  • 使用 pandas 迭代单个 CSV 文件逐块
  • 我还看到了 zarr、WebDataset 和 TensorStore 的讨论,但我不知道这些是否适合这个问题

对于那些没有太多处理不适合内存的数据集的经验的人来说,有什么关于解决这个问题的最佳方法的建议吗?

python pytorch sparse-matrix large-data
1个回答
0
投票

要处理数据集大小,请使用像datasets这样的库,它不需要加载到内存中。

如果你想更进一步,你可以将数据从密集转换为稀疏,其中你只跟踪当前类的 ID。

例如,

[0, 0, 1, 0, 0, 0, 0, 0, 1, 0]
将变为
[2, 8]

© www.soinside.com 2019 - 2024. All rights reserved.