【发布时间】:2014-06-30 11:38:58
【问题描述】:
- 我正在执行具有 50000 行和 100 列的矩阵的点积及其转置。矩阵的值是浮点数。
A(50000, 100) B(100, 50000)
- 基本上我在对较大的稀疏矩阵执行 SVD 后得到矩阵。
- 矩阵为 numpy.ndarray 类型。
-
我使用 numpy 的点法将两个矩阵相乘。我得到分段错误。
numpy.dot(A, B)
点积在 30000 行的矩阵上运行良好,但在 50000 行时失败。
- numpy 的点积有限制吗?
- 使用点积时有上述问题吗?
- 是否有任何其他优秀的 Python 线性代数工具可以在大型矩阵上有效。
【问题讨论】:
-
我认为不幸的是它会出现段错误而不是给出错误消息。但是,50000x50000 双矩阵需要约 20GB 的内存。你的电脑有多少内存?
-
在我的盒子上给出一个
MemoryError(NumPy 1.8.1)。请注意,float32格式的结果矩阵将占用 9.3GB,是float64格式的两倍。 -
@NPE 我在 8GB 机器上运行它。也许这就是 Segmentation Fault 的原因。Python 中有没有有效的方法来处理这些规模的计算?
-
@larsmans 是的.. 内存是问题..
-
@sravan_kumar,你或许可以使用
np.memmap数组
标签: python numpy multidimensional-array svd