前言
前段时间学习了深度学习入门课程斯坦福CS231n,巩固和理解课程的最佳方式就是完成课后代码作业。在这里记录下本人对作业的思考和解析,以供大家参考。
关于CS231n学习笔记翻译,强烈推荐 知乎专栏 。
配合笔记看视频,再完成作业,非常有效。
一、准备工作
1、作业Assignment1下载
链接:https://pan.baidu.com/s/11tDkdBRy5ndwkKue_1vMuw 密码:jvgk
2、环境Anaconda2安装
完成作业需要Python以及许多相关科学计算环境,建议大家直接安装Anaconda2,能够快速方便的配置,直接上手写作业。代码是Python 2.x版本,故选择Anaconda2-4.2.0-Windows-x86_64.exe,否则可能出现某些函数不兼容,造成不必要的麻烦。
3、数据集CIFAR-10下载
简单介绍一下,CIFAR-10是一个只有10类图片的彩色图片数据库,共6w张32*32像素大小的图片,其中5w张是训练图片,1w张是测试图片,所有图片均已标记。
选择CIFAR10 python version下载,解压后将数据放在cs231n/datasets目录下。
4、验证WebSockets是否可用
作业在Ipython Notebook内完成,需要支持WebSockets。打开下述网页,若显示“WORK FOR YOU”,表示可用。
测试链接:http://websocketstest.com/
出现以上字样即可。
若无法使用,需要翻墙。网上可用VPN有很多,大家可以搜索一下。
至此准备工作全部完成,可以开始写作业啦。
二、作业解析
1、连接服务器
如图所示,打开cmd,在[your path]/assignment1/目录下输入Ipython notebook 或者 Jupyter notebook,回车。
更多Ipython notebook教程可参考 这里 。
注意:一定要在目录下打开,否则后面会出现找不到包的情况。
退出的话输入ctrl+c,等待关闭即可。
成功连上服务器后,你将在浏览器下看到如下界面:
这次的作业就需要在knn.ipynb下完成。
2、运行代码
选中代码块,ctrl+enter或shift+enter运行,区别是shift+enter会自动跳转到下一部分。页面右上角的圆圈表示运行状态,空心表示结束,实心表示正在运行。
下面对各部分代码进行补充和运行。
kNN分类器包括两个部分:
- 在训练的时候,分类器载入数据并仅仅记住他们(不做其他处理)
- 在测试的时候,分类器依靠对测试图片和训练图片做对比,并且选出k个最相似的标签
- 另外,k是依靠交叉验证确定的
在这个作业中,我们将实现这些步骤并且理解基本的图像分类过程,理解交叉验证,并且学会写高效的向量化代码。
3、代码解析
3.1 一些基本的初始化
# Run some setup code for this notebook.
importrandom
importnumpy as np
fromcs231n.data_utils import load_CIFAR10
importmatplotlib.pyplot as plt
from__future__ import print_function
#This is a bit of magic to make matplotlib figures appear inline in the notebook
#rather than in a new window.
%matplotlibinline
plt.rcParams['figure.figsize']= (10.0, 8.0) # set default size of plots
plt.rcParams['image.interpolation']= 'nearest'
plt.rcParams['image.cmap']= 'gray'
#Some more magic so that the notebook will reload external python modules;
#see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython
%load_extautoreload
%autoreload2