CS231n简介
详见 CS231n课程笔记1:Introduction。
注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教。
作业笔记
KNN部分主要关注与距离矩阵的计算。输入是X_test[test_num,D], X_train[train_num,D],其中D为特征维度,train_num、test_num分别是训练集以及测试集大小。返回dist[test_num,train_num],其中dist[i,j]为X_test[i]与X_train[j]的L2距离。
1. 2-loop算法
for i in range(test_num):
for j in range(train_num):
dist[i,j] = np.sum(np.square(X_test[i]-X_train[j]))
2. 1-loop算法
这里利用Numpy中A[D1,D]-B[D]结果为C[D1,D],其中C[i]=A[i]-B。
numpy中np.sum有axis用于表示求和的维度。
for i in range(test_num):
dist[i] = np.sum(np.square(X_train-X_test[i]),axis=1)
3. no-loop算法
这里利用numpy的broadcasting性质,例如A=[1,2],