1

MATLAB でガウス混合モデルを適合させたい。具体的には、さまざまな開始点から数百のモデルを適合させ、それらを数回の EM 反復 (たとえば 10 回) に適合させたいと考えています。最終的な目的は、遺伝的アルゴリズムを使用して適切なモデルを検索することです

混合モデルの適合には時間がかかるため、MATLAB の並列処理ツールボックスを使用して gpu で実行される高速な実装があるかどうか疑問に思っていましたか? gpuArray を gmcluster 関数に渡し、gmcluster と関連ファイルの適切な変数を gpuArray に変更することで、単純な GPU バージョンを実装してみました。これにより、実際にランタイムが悪化しました (特定のデータセットで CPU 時間は 0.1 で、GPU は 0.2 でした)。

単純な GPU の実装にできる改善点はありますか? (私は GPU プログラミングの初心者です)。

ここにあるようないくつかの実装があることは承知していますが、平均値と共分散の開始パラメータを受け入れるほど柔軟ではありません。

ヘルプ/ポインタをいただければ幸いです。

ありがとう

編集:これは、かなり時間がかかるコードの一部であり、GPU で実行したいと考えています。このコードは、各 og k ガウスの確率メンバーシップ行列ポストが与えられた場合に、mu で平均を計算し、Sigma で共分散を計算します。

for j = 1:k
    mu(j,:) = post(:,j)' * X / PComponents(j);
    Xcentered = bsxfun(@minus, X, mu(j,:));
    Xcentered = bsxfun(@times,sqrt(post(:,j)),Xcentered);
    Sigma(:,:,j) = Xcentered'*Xcentered/S.PComponents(j)+ regVal*eye(d);
end

どこ:

size(X) = [n,d]
size(mu) = [k,d]
size(Sigma) = [d,d,k]
size(PComponents) = [k]

私の目的では、n は 1000 から 10,000 の間、d は 10 前後、k は 2 から 15 の間です。

4

0 に答える 0