0

当我在我的代码中评估执行时间时,我发现以下三行代码占用了几乎 99% 的运行时间,所以我的目标是优化这三行代码。

以下代码的细节是:R,P,Q都是稀疏矩阵,我使用scipy.sparse.lil_matrix,数据类型是np.float64,而alpha,beta只是float常量。

eij = R[i, j] - np.dot(P[i, :], Q[:, j])                             (~9s)
    for k in range(K):                                               (~11s)
         P[i, k] += alpha * (2 * eij * Q[k, j] - beta * P[i, k])
         Q[k, j] += alpha * (2 * eij * P[i, k] - beta * Q[k, j])

我怎样才能让他们跑得更快!!!???

4

1 回答 1

0

原来numpy已经优化了矩阵类型的操作,所以将代码改写为:

eij = rating_train[i, j] - np.dot(P[i, :], Q[:, j])
P[i, :] += alpha * (2 * eij * Q[:, j] - beta * P[i, :])
Q[:, j] += alpha * (2 * eij * P[i, :] - beta * Q[:, j])

这比原始代码快约 1 倍。但是我还是不满意。。

于 2013-04-23T14:40:04.983 回答