cs231n作业一(knn部分操作过程详解)

  本帖面向刚接触机器学习或者学习斯坦福李飞飞计算机视觉cs231n课程的入门者。我作为一个货真价实的菜鸟,听了cs231n的前部分课以后,准备开始实操,却遇到了很多白痴的问题。如果你是一个刚入门的新手,请不要灰心,其实按部就班的做还是很容易的。如果是大神,请绕步,此贴可能不太适合。

问题背景:基于KNN(K紧邻)算法,使用cifar-10数据集训练模型并对未知的图像进行分类预测。这个算法是最简单的算法,它的核心就是计算测试集与训练集之间的L2距离。实验代码模板于网易云课堂-李飞飞cs231n课程提取,已实现好的代码Github已泛滥。

平台简介:anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。对于初学者而言是非常好的选择。下载链接:https://www.anaconda.com/distribution/。选择对应的系统与合适的python版本下载即可,推荐使用python3。

数据集载入:首先,我们需要下载好数据集,见http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz,或于百度网盘提取:链接:https://pan.baidu.com/s/1RI5FmusBSPRdShGFb8IVag 提取码:vo6l 。然后将下载好的数据放在所在datasets文件夹下。打开anaconda,启动jupyter notebook,会从默认浏览器打开。这时Upload你的工程到notebook,如果上载后无反应,说明默认的工作文件夹已经包含了你的工程所在的文件夹。

进入文件夹,点击knn.ipynb文件进入交互式编程环境,这时,你将会感到柳暗花明。还剩最后一步,读取数据集:只需将第二个cell中的数据集地址更改即可,文件的地址为:'cs231n/datasets/数据集文件夹名称',具体的载入文件代码见:data_utils.py。

  到这时,程序已经可以跑起来了。对于程序,需要掌握的核心就是两次循环、一次循环以及无循环计算L2距离的代码以及分类决策的部分,工作量相当小。当然了,可能会有几个函数不懂意思是什么,稍微查一下问题很容易解决。

这里是笔者关于无循环计算L2距离的一点笔记:链接:https://pan.baidu.com/s/1u5SYw8SwE5lp3MISuNbJfg
提取码:76pb 。

(第一次发帖,多多关照)

猜你喜欢

转载自www.cnblogs.com/kubatu/p/10349516.html