我有两个矩阵——A是3033x3033,X是3033x20。我正在运行以下代码(如我另一个问题的答案中建议的):
n, d = X.shape
c = X.reshape(n, -1, d) - X.reshape(-1, n, d)
return np.tensordot(A.reshape(n, n, -1) * c, c, axes=[(0,1),(0,1)])
在最后一行,Python会直接停止并显示“MemoryError”错误。我该如何解决这个问题?可以通过更改Python设置或以更节省内存的方式执行这个操作来解决。
.shape
是什么? - farenorthn
,d
是什么?您应该简化您的代码,以便我们可以更轻松地帮助您(即帮助我帮助您)。将最终行分成多个部分,例如:in1 = A.reshape(n, n, -1) * c
,然后执行np.tensordot(in1, c, axes=[(0,1), (0,1)])
。我猜您的问题出现在第二部分中。然后,您只需说明in1
和c
的尺寸,而不是强迫我弄清楚发生了什么。 - farenorth