如何使用 dtype=float16 创建巨大的稀疏矩阵?



我已经尝试了所有这些,但遇到了内存错误或某种其他错误。

Matrix1 = csc_matrix((130000,130000)).todense()
Matrix1 = csc_matrix((130000,130000), dtype=float_).todense()
Matrix1 = csc_matrix((130000,130000), dtype=float16).todense()

如何创建具有浮点型数据的巨大稀疏矩阵?

要创建一个巨大的稀疏矩阵,只需执行您正在执行的操作:

Matrix1 = csc_matrix((130000,130000), dtype=float16)

。最后不叫todense()。此操作会成功,并且会占用少量内存。1

当您添加todense()时,会成功创建一个占用少量内存的巨大稀疏数组,然后尝试将其转换为占用大量内存的密集数组,该数组因MemoryError而失败。但解决方案只是...别这样。

同样,如果您使用dtype=float_而不是dtype=float16,您将获得 float64 值(这不是您想要的,并且占用 4 倍的内存(,但同样,解决方案只是......别这样。


1.sys.getsizeof(m)为稀疏数组句柄提供 56 个字节,sys.getsizeof(m.data)为内部存储句柄提供 96 个字节,m.data.nbytes为实际存储提供 0 个字节,总共 152 个字节。这不太可能引起MemoryError.

最新更新