关于CS231N-Assignment1-KNN中no-loop矩阵乘法代码的讲解

简介: 在使用无循环的算法进行计算距离的效率是很高的 可以看到No loop算法使用的时间远远小于之前两种算法Two loop version took 56.

在使用无循环的算法进行计算距离的效率是很高的
可以看到No loop算法使用的时间远远小于之前两种算法

Two loop version took 56.785069 seconds
One loop version took 136.449761 seconds
No loop version took 0.591535 seconds   #很快!

实现代码主要为以下这一段:
其中X为500×3072的矩阵(测试矩阵)
X_train为5000×3072的矩阵(训练矩阵)
dists 为500×5000的矩阵(距离矩阵)
题中的目的就是将X中每一行的像素数值与X_train中每一行的像素数值(3072个)进行距离运算得出欧氏距离(L2)再储存到dists中
核心公式

test_sum = np.sum(np.square(X), axis=1)  # num_test x 1
train_sum = np.sum(np.square(self.X_train), axis=1)  # num_train x 1
inner_product = np.dot(X, self.X_train.T)  # num_test x num_train
dists = np.sqrt(-2 * inner_product + test_sum.reshape(-1, 1) + train_sum)  # broadcast

公式讲解:
假设现在有三个矩阵:A(X)、B(X_train)、C(dists )
将维数缩小以方便操作,稍微进行推导,就可以得出上面的公式了
推导过程如下:
这里写图片描述

目录
相关文章
|
8月前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中非标量调用backward()的时候为什么要先进行sum操作
在《动手学深度学习》第二版教程中,当y为非标量的时候,调用backward()函数时,为什么先要求和呢(即y.sum().backward()),估计很多读者有点懵,今天小编给大家说说我的理解。
443 3
ChIP-seq 分析:TF 结合和表观遗传状态(13)
ChIP-seq 分析:TF 结合和表观遗传状态(13)
115 0
SP10707 COT2 - Count on a tree II(欧拉序 树上莫队)
SP10707 COT2 - Count on a tree II(欧拉序 树上莫队)
123 0
SP10707 COT2 - Count on a tree II(欧拉序 树上莫队)
|
设计模式 索引 Python
如何给列表降维?sum()函数的妙用
1、如果原列表的元素除了列表,还有其它类型的元素,怎么把同类的元素归并在一起呢? 2、如果是一个三维或更高维的列表,怎么更好地把它们压缩成一维列表呢? 3、sum() 函数还有什么知识要点呢?
208 0
|
机器学习/深度学习 算法
【CS224n】(assignment3)Adam和Dropout
各类深度学习的优化算法的演变过程:SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的历程。 优化算法的框架:
120 0
【CS224n】(assignment3)Adam和Dropout
|
机器学习/深度学习 算法 Python
ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
|
TensorFlow 算法框架/工具 索引
[转载]Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?
转载链接:https://www.zhihu.com/question/51325408/answer/125426642来源:知乎 这个问题无外乎有三个难点: 什么是sum 什么是reduce 什么是维度(indices, 现在均改为了axis和numpy等包一致) sum很简单,就是求和,那么问题就是2和3,让我们慢慢来讲。
1577 0