Python 如何创建dtype=float16的大型稀疏矩阵?
我尝试了所有这些,要么是内存错误,要么是其他错误Python 如何创建dtype=float16的大型稀疏矩阵?,python,matrix,sparse-matrix,Python,Matrix,Sparse Matrix,我尝试了所有这些,要么是内存错误,要么是其他错误 Matrix1 = csc_matrix((130000,130000)).todense() Matrix1 = csc_matrix((130000,130000), dtype=float_).todense() Matrix1 = csc_matrix((130000,130000), dtype=float16).todense() 如何使用浮点型数据创建一个巨大的稀疏矩阵?要创建一个巨大的稀疏矩阵,只需执行您正在执行的操作: M
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)
…最后没有打电话。这会成功,并占用少量内存。1
当您添加todense()
时,它成功地创建了一个占用少量内存的大型稀疏数组,然后尝试将其转换为占用大量内存的密集数组,但由于内存错误而失败。但解决办法就是…不要那样做
同样,如果您使用而不是dtype=float16
,您将得到float64值(这不是您想要的,并且占用了4倍的内存),但是,解决方案只是…不要这样做
一,sys.getsizeof(m)
为稀疏数组句柄提供56字节,sys.getsizeof(m.data)
为内部存储句柄提供96字节,m.data.nbytes
为实际存储句柄提供0字节,总计152字节。这不太可能引发内存错误
看起来您正在成功创建一个巨大的稀疏矩阵,然后立即对其调用todense()
,这就是导致内存错误的原因。如果您想要稀疏数组,为什么要将其转换为密集数组?而且,float\uuu
是float64
的别名,那么如果您想要float16
,为什么要使用它呢?这显然会使它占用4倍的内存?