起因是代码中有一步涉及矩阵求逆运算,如下:
adj = sp.coo_matrix((np.ones(edges.shape[0]), (edges[:, 0], edges[:, 1])),
shape=(one_hot_labels.shape[0], one_hot_labels.shape[0]),
dtype=np.float32)
adj = adj + adj.T.multiply(adj.T > adj) - adj.multiply(adj.T > adj)
eigen_adj = None
if self.compute_s:
eigen_adj = self.c * inv((sp.eye(adj.shape[0]) - (1 - self.c) * self.adj_normalize(adj)).toarray())
报错:
MemoryError X
Unable to allocate 28.5 GiB for an array with shape (61806, 61806) and data type float64
因为我的电脑只有16G内存,就想着把精度改成float32,但发现还是不行,即使把inv()括号里的稀疏矩阵改为float32型,inv()返回的好像还是float64,请问怎么样才能返回float32呢?
后来我又尝试了把numpy库的代码改了
但是还是不行,依旧报错:
请问有人知道这是怎么回事嘛?