假设我有一个权重矩阵W
nxm,其中 m 是变量的数量,n 是实例的数量。我也有相同大小的数据矩阵X
。我尝试在 X 中找到与每个实例最接近的权重向量。但是,两个矩阵的维数都很大,因此简单的方法是不够的。我在 MATLAB 上尝试了一些 GPU 技巧,但效果不佳,因为它是按顺序计算每个实例的最接近权重的顺序方法。我现在正在寻找有效的一次性代码。这需要所有的 W 和 X,并通过一些 MATLAB 技巧以及可能添加一些 GPU 来找到赢家。有没有人可以建议 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);