(初めて質問するので、タグや説明が間違っていると思われる場合は、教えてください、ありがとう!)
私は作業を行っており
、モジュールが別のモジュールを
Matrix Factorization
使用するモジュールを使用しています。
このモジュールはファイルからのものです
。この Web サイトでソース コードを確認
できます/sklearn/decomposition/cdnmf_fast.pyx
C 言語を使用していることがわかります。 with nogil:」なので、並列化を使用したに違いないと思います。したがって、次のようにテストするために同様のコードを記述します。sklearn.decomposition.nmf
from sklearn.decomposition.cdnmf_fast import _update_cdnmf_fast
cdnmf_fast.so
from sklearn.decomposition.cdnmf_fast import _update_cdnmf_fast
import numpy as np
from numpy import *
M = 3
X = zeros((M,M), dtype="float64")
U = ones((M,M), dtype="float64")
V = np.arange(M*M).reshape(M,M).astype("float64")
permutation = np.arange(M)
print X
print U
print V
print permutation
x = _update_cdnmf_fast(X,U,V,permutation)
print X
期待される結果は、X=X+VW*U=0+V-0=V です。ただし、結果は奇妙で、np.dot() よりもはるかに遅いです。次に、このコードを並列化コードではなく、通常の Python コードに変更します。結果は以前と同じです。したがって、その並列化が機能していないと確信しています。Xを変更しながらXを使用しているため、結果はもちろん間違っています。並列化が機能しない理由がわかりません。モジュールのバグなのか、インポートの仕方のせいなのか。
実際、これは sklearn.decomposition.nmf モジュールを使用するときに心配になります。このモジュールをいつ使用するか、その並列化も機能していないかどうかはわかりません。そのため、並列化がどのように機能するかを知りたいです。
ご協力ありがとうございました!