Source code for spalor.matrix_tools.factorization_util

import numpy as np

[docs]def partXY(U,V, X): ''' returns a vector of a sparse set of entries of UV^T np.sum(np.multiply(U[X[0][:], :],V[X[1][:],:]), axis=1) :param U: :param V: :param X: (2,n) nparray of indices for the entries of UV^T needed :return: y (n,) nparray of entries of UV^T ''' return np.sum(np.multiply(U[X[0][:], :],V[X[1][:],:]), axis=1)
[docs]def svd_low_rank_plus_sparse(U,Sigma,V, S, eps=1e-6, max_iter=100): ''' Uses power iteration method to find the truncated singular value decompositon of the rank-r approximation to the matrix U Sigma V^T +S efficiently :param U: (d1,r) :param Sigma: (r,r) :param V: (d2,r) :param S: sparse matrix (d1, d2) :return' ''' pass
[docs]def svd_from_factorization(U,V): ''' Orthonormalizes U and V to obtain the singular decomposition of UV^T :param U: (d1,r) numpy array :param V: (d2,r) numpy array :return: (U,Sigma,V) - the singular value decomposition of UV^T ''' (qu,ru)=np.linalg.qr(U) (qv,rv)=np.linalg.qr(V) [ur,sr,vr]=np.linalg.svd(ru.dot(rv.T)) return (qu.dot(ur), sr, qv.dot(vr.T))
#%%