【问题标题】:Euclidean Distance Vectorization Problem MNIST [MATLAB]欧几里德距离向量化问题 MNIST [MATLAB]
【发布时间】:2019-03-22 13:45:10
【问题描述】:

我正在尝试计算 MNIST 数据集的欧几里得距离。

X_Train = 60,000*784 and   

 X_Test = 10,000*784

D= No. of Columns, 
M= rows of training set and 
N = rows of test set

我已经完成了

X_test_sq = sum(X_test(:,1:784),2)

对于训练集也是如此,我得到 10,000*1 和 60,000*1 向量。 但我不明白 XtestSqrR 是什么意思,X_cross 不应该是点积吗?

【问题讨论】:

    标签: matlab knn


    【解决方案1】:

    XtestSqrR 是距离的平方和(相对于原点 0,0,...,0)。沿每个维度的距离为:sum( X(:,d).^2 )(先平方后求和);那么你可以跨维度求和(d 从 1 到 60,000)。

    我还认为 x 表示矩阵乘法,而不是叉积。所以一个 60,000*784 的矩阵乘以一个 (784*10,000) 的矩阵,就是 60,000*10,000。

    【讨论】:

    • Xsqr = d.testX.^2 -------- Xtsqr = d.trainX.^2 -------- XtestSqr = sum(Xtsqr(:,784) ,2); // 对矩阵的行向量求和 ----- XtrainSqr = sum(Xtsqr(:,784),2); ------ 现在我有两个列向量 10,000*1 和 60,000*1 ----- 现在轮到两者的第二个总和,但它说 XtestSqr 水平 M 次,即 60,000 但 XtestSqr 只有 1 列,甚至转置后有 10k
    • 请稍微解释一下您的答案,因为我对尺寸非常困惑。谢谢
    • 好的,我已经完成了。 matlab 花了 20 分钟来解决这个问题。有什么办法让它更快?
    • 感谢您的尝试!您可能会获得一些加速,但最终我会建议使用 C/C++。
    猜你喜欢
    • 2017-05-03
    • 2020-03-09
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    相关资源
    最近更新 更多