使用 einsum 拆分矩阵乘法
Splitting matrix multiplication using einsum
我有一个大数据矩阵,我想计算那个大矩阵的相似度矩阵,但由于内存限制,我想拆分计算。
假设我有以下内容:例如,我采用了较小的矩阵
data1 = data/np.linalg.norm(data,axis=1)[:,None]
(Pdb) data1
array([[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0.04777415, 0.00091094, 0.01326067, ..., 0. ,
0. , 0. ],
...,
[ 0. , 0.01503281, 0.00655707, ..., 0. ,
0. , 0. ],
[ 0.00418038, 0.00308079, 0.01893477, ..., 0. ,
0. , 0. ],
[ 0.06883803, 0. , 0.0209448 , ..., 0. ,
0. , 0. ]])
他们我尝试做以下事情:
similarity_matrix[n1:n2,m1:m2] = np.einsum('ik,jk->ij', data1[n1:n2,:], data1[m1:m2,:])
n1,n2,m1,m2计算如下:(df为数据框)
data = df.values
m, k = data.shape
n1=0; n2=m/2; m1=n2+1; m2=m;
但错误是:
(Pdb) similarity_matrix[n1:n2,m1:m2] = np.einsum('ik,jk->ij', data1[n1:n2,:], data1[m1:m2,:])
*** NameError: name 'similarity_matrix' is not defined
你没做过类似的事情吗
similarity_matrix = np.empty((N,M),dtype=float)
在您开始计算时?
在创建数组之前,您不能在等式的右侧或左侧为数组编制索引。
如果完整的 (N,M)
矩阵对于内存来说太大了,那么只需将您的 einsum
值分配给另一个变量,然后使用它。
partial_matrix = np.einsum...
如何将 partial_matrix
与虚拟 similarity_matrix
联系起来是另一个问题。
我有一个大数据矩阵,我想计算那个大矩阵的相似度矩阵,但由于内存限制,我想拆分计算。
假设我有以下内容:例如,我采用了较小的矩阵
data1 = data/np.linalg.norm(data,axis=1)[:,None]
(Pdb) data1
array([[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 0.04777415, 0.00091094, 0.01326067, ..., 0. ,
0. , 0. ],
...,
[ 0. , 0.01503281, 0.00655707, ..., 0. ,
0. , 0. ],
[ 0.00418038, 0.00308079, 0.01893477, ..., 0. ,
0. , 0. ],
[ 0.06883803, 0. , 0.0209448 , ..., 0. ,
0. , 0. ]])
他们我尝试做以下事情:
similarity_matrix[n1:n2,m1:m2] = np.einsum('ik,jk->ij', data1[n1:n2,:], data1[m1:m2,:])
n1,n2,m1,m2计算如下:(df为数据框)
data = df.values
m, k = data.shape
n1=0; n2=m/2; m1=n2+1; m2=m;
但错误是:
(Pdb) similarity_matrix[n1:n2,m1:m2] = np.einsum('ik,jk->ij', data1[n1:n2,:], data1[m1:m2,:])
*** NameError: name 'similarity_matrix' is not defined
你没做过类似的事情吗
similarity_matrix = np.empty((N,M),dtype=float)
在您开始计算时?
在创建数组之前,您不能在等式的右侧或左侧为数组编制索引。
如果完整的 (N,M)
矩阵对于内存来说太大了,那么只需将您的 einsum
值分配给另一个变量,然后使用它。
partial_matrix = np.einsum...
如何将 partial_matrix
与虚拟 similarity_matrix
联系起来是另一个问题。