0

m が変数の数、n がインスタンスの数である重み行列W nxmがあるとします。Xまた、同じサイズのデータ​​マトリックスがあります。X の各インスタンスに最も近い重みベクトルを見つけようとします。ただし、両方の行列が非常に次元的であるため、単純な方法では十分ではありません。MATLAB で GPU トリックをいくつか試しましたが、各インスタンスの最も近い重みを順番に計算する順次アプローチだったため、うまくいきません。現在、効率的なワンショット コードを探しています。それはすべての W と X を取り、おそらく GPU を追加したいくつかの MATLAB トリックで勝者を見つけます。MATLAB でコード スニペットを提案できる人はいますか?

これは私がシーケンシャル用に書いたものです

        x_in_d = gpuArray(x_in); % take input instance to device
        W_d = gpuArray(W); % take weight matrix to device
        Dx = W_d - x_in_d(ones(size(W_d,1),1),logical(ones(1,length(x_in_d))));
        [d_min,winner] = min(sum((Dx.^2)'));
        d_min = gather(d_min); %gather results
        winner = gather(winner);
4

1 に答える 1

2

そんなに異次元ってどういうこと?それはただのmxn行列ですよね?

あなたの説明(最も明確ではない)に基づいて、いくつかのサンプルデータを提供できれば非常に役に立ちます。これがあなたのデータがどのように見えるかです。

重み=

[1 4 2

5 3 1]

データ=

[2 5 1

1 2 2]

また、どの行の重みがデータの行に最も近いかを知りたいですか? この場合、両方のデータ行の重みの最初の行になります。

質問を編集して、何を求めているかを明確にし、いくつかの例を使用することを検討してください。

編集:

私はロディのダップが好きです。コメント、私が正しければチェックアウトしてください:ここにリンク

于 2013-06-26T14:32:53.477 に答える