def update_row_param(self, phi_csr, mu0, c, v, r_prev, u_prev, phi_r, phi_u, num_process):
nrow = self.y_csr.shape[0]
# Update 'c' and 'v' block-wise in parallel.
if num_process == 1:
r, u = self.update_row_param_blockwise(self.y_csr, phi_csr, mu0, c, v, r_prev, u_prev, phi_r, phi_u)
else:
n_block = num_process
block_ind = np.linspace(0, nrow, 1 + n_block, dtype=int)
ru = joblib.Parallel(n_jobs=num_process)(
joblib.delayed(self.update_row_param_blockwise)(
self.y_csr[block_ind[m]:block_ind[m + 1], :],
phi_csr[block_ind[m]:block_ind[m + 1], :],
mu0, c, v,
r_prev[block_ind[m]:block_ind[m + 1]],
u_prev[block_ind[m]:block_ind[m + 1]],
phi_r[block_ind[m]:block_ind[m + 1]],
phi_u)
for m in range(n_block))
r = np.concatenate([ru_i[0] for ru_i in ru])
u = np.vstack([ru_i[1] for ru_i in ru])
return r, u
matrix_factorization.py 文件源码
python
阅读 39
收藏 0
点赞 0
评论 0
评论列表
文章目录