私は、100万行と100列のサイズの行列に対して次のコードを実行しました。Pythonでのループ最適化について
私は次のコードを最適化するつもりです。どんな助けでも本当に感謝しています。
def matrix_factorization(R, P, Q, K, steps=5000, alpha=0.0002, beta=0.02):
Q = Q.T
for step in range(steps):
e = 0
for i in range(len(R)):
for j in range(len(R[i])):
if R[i][j] > 0:
temp_dot = numpy.dot(P[i,:],Q[:,j])
eij = R[i][j] - temp_dot
e = e + eij*eij
for k in range(K):
P[i][k] = P[i][k] + alpha * (2 * eij * Q[k][j] - beta * P[i][k])
Q[k][j] = Q[k][j] + alpha * (2 * eij * P[i][k] - beta * Q[k][j])
e = e + (beta/2) * ((P[i][k]*P[i][k]) + (Q[k][j]*Q[k][j]))
if e < 0.001:
break
return P, Q.T
どのように大きなこのマシンとどのくらいの時間がかかりますされています
は次のようにベクトル化することができますか? – acushner
一度にすべてを実行する必要がありますか、これをチャンクするかスレッドすることはできますか?私はあなたの操作を分かりやすく分かりませんので、分割してその部分を並列に分析することはできません。 – DejaVuSansMono
私は8GBのRAMとcorei5を使用しています...私は5000行と5列のサンプル行列をテストしました。それはK = 5の値で1時間近くかかりました –