提问人:dentist_inedible 提问时间:10/27/2023 更新时间:10/28/2023 访问量:39
在 pytorch 中在非常大的稀疏矩阵上训练神经网络
Training neural networks on very large sparse matrices in pytorch
问:
我有一个数据集,大约有 7400 万个观测值。这些观测值中的每一个都由 ~1,000 个特征表示,并用多达 ~3,200 个二进制类进行标记。大多数单个观测值的标记不超过 ~10 个类,因此标签非常稀疏。目前,标签和特征矩阵以 MatrixMarket 格式存储。
我想在 74m * 1000 输入矩阵上训练一个神经网络来预测 74m * 3200 标签。但是,这显然不适合内存。这是我第一次使用这么大的数据集。到目前为止,我可以看到的选项包括:
- 将每组特征和标签分别写入文本文件,并从文件列表中随机抽取每个小批量中的项目(似乎效率低下)
- 使用 pandas 逐块遍历单个 CSV 文件
- 我也看到了 zarr、WebDataset 和 TensorStore 的讨论,但我无法判断它们是否适合这个问题
对于没有太多经验使用不适合内存的数据集的人来说,解决此问题的最佳方法有什么建议吗?
答:
1赞
Karl
10/28/2023
#1
若要处理数据集大小,请使用不需要加载到内存中的库(如数据集)。
如果要更进一步,可以将数据从密集转换为稀疏,其中仅跟踪当前类的 ID。
例如,会变成[0, 0, 1, 0, 0, 0, 0, 0, 1, 0]
[2, 8]
下一个:使用稀疏矩阵的非均匀域移动平均
评论