假设我有一个权重矩阵 W
,大小为nxm,其中m是变量的数量,n是实例的数量。同时我有一个相同大小的数据矩阵 X
。我试图找到X中每个实例最接近的权重向量。然而,这两个矩阵的维度都很高,因此普通的方法不足以应对。我曾尝试在MATLAB中使用一些GPU技巧,但由于这是逐个实例顺序计算最接近权重的方法,效果不佳。现在我正在寻找高效的一次性代码,能够处理所有的W和X,并通过一些MATLAB技巧和可能的GPU加速找到最佳匹配。是否有人能提供MATLAB中的代码片段建议?
这是我编写的顺序处理代码
x_in_d = gpuArray(x_in); % 将输入实例传输到设备
W_d = gpuArray(W); % 将权重矩阵传输到设备
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); % 收集结果
winner = gather(winner);
回答:
你说的“维度很高”是指什么?这不就是一个m x n的矩阵吗?
如果你能提供一些样本数据会非常有帮助,根据你的描述(不太清晰),我认为你的数据看起来是这样的。
权重=
[1 4 2
5 3 1]
数据=
[2 5 1
1 2 2]
你想找出哪一行权重与数据的某一行最接近?在这种情况下,两行数据都与权重的第一行最接近。
请编辑你的问题以澄清你的需求,并考虑使用一些示例。
编辑:
我喜欢Rody的重复评论,如果我理解正确,请查看:链接在此