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);