cs231n 2019版assignment 笔记(入门级解析,超详细)
CS231n 2019版作业笔记
手抄代码的方式不推荐,由于一些特殊原因导致我可以有充裕的时间来这样学习,希望能对和我一样的小白有帮助
几点说明
1. 代码源自b站的cs231n课程视频的评论区,这里也附上原网址:
白嫖得到的作业代码
另外也附上我下载下来后加了一部分注释以及略有改动(整体不影响观感)的代码
白嫖下来改动后假装是自己的代码
百度网盘提取码: vbhq
提取二维码
- 自己改了之后的包括了cifar数据集以及microsoft coco数据集但是有一个文件一直下载不成功,打开.sh脚本文件去下载的时候提示文件不存在,但是不是很影响,可能就是看不到assignment3中的部分图片效果,建议可以把文件复制一份,两份都用jupyter book打开,一份看运行结果另一份测试着用。该文件如下
问题不大,当然如果读者可以找到相关的数据集最好
- 由于源码是不含数据集的所以如果嫌下载慢的话建议从第一个网站下载源码,我上传的部分是包含了我尽可能下载了的数据集的,所以文件稍大一些,解压后有2-3GB
2. 第三方库的问题
- 注意一些库需要自行安装,如在assignment3部分需要安装pytorch或者tensorflow,另外anaconda默认会安装最新的库,但是作业中的一些函数是从其中导入的比如imread等,我查到的解决方法是换成从imageio导入,但是官方还从scipy导入了另外一个库,同样无法解决。办法是把scipy降级到1.2.1版本,但是我尝试了很多次当从conda卸载scipy库时同时会卸载掉许多相关的库(人类迷惑行为),然后…我就因为这个问题吧anaconda重装了好几次。最后我的建议是从site-packages文件夹中手动删除scipy库再安装就可以了,如果不采用anaconda操作可能比较麻烦,因为安装scipy需要numpy的一些相关库支持,这个numpy不是单单pip安装就可以的,而anaconda提供了这个支持的库,而手动操作时需要一个第三方网站(下载龟速,翻墙也是但迅雷貌似好些),下完我安装又出现错误就放弃了。
- 还有就是pytorch的安装现在也是龟速,这个的话网上有一些镜像教程,具体我在操作了一晚上之后发现的方法不仅是挂一个镜像网站就可以的,还要指定pytorch库。如下是我的操作:
– 打开C:user\I.condarc文件,然后(这里使用清华源)添加指定pytorch的网址:
如上的第四行,具体其他的设置我也并不是很清楚所以不便多讲
3. 我笔记主要做了什么
- 首先我算是做了个翻译官,把官方作业中很多的注释以及提示用更浅显的方式进行解读、标注有很多表述不那么清楚于是本人在这里进行了转述,主要是为了自己看懂当然也就写下来给和我一样的小白来看
- 另外我对许多反向传播的公司进行了推导,这部分在项目中可能都使用框架但本人还是耗费了较多时间进行解读
- 笔记采用手写,所以上传的时候有不清楚或不整齐的地方还请谅解,笔记上方有页码,发现页码不连续的地方是我故意空出来以后可能加入的地方,具体空出来的页码有:18、38、56、57、62、71-75
- 笔记中一般采用红笔写代码,黑笔写注释和解释(反向传播推导等额外的内容除外),所以在函数中红笔一律为代码部分,有些地方为了节省空间,比如除法会用分数线这样代替,一行写不下的函数参数也可能用两行
- 如果觉得笔者总结的还不错但是图片不够清晰可以私聊本人
- 也可以从百度网盘下载图片笔记原图
提取码:m4ca
二维码提取: - 另外可能有人像我一样之前几乎没用python写过什么程序,根据我读代码时遇到的问题以及cs231n中的知识点迷惑点,一些参考资料放在这里(按字母排序):
A:
Adam算法
B:
Batch_normalization_1
Batch_normalization_2
Batch_normalization 与 Layer normalization
关系
C:
Counter.most_common() - Convolution mudule:
Forward and backward_1
Forward and backward_2
D: - Dictionary:
*arg and **kwargs
setdefault() - Dropout:
Forward and backword_1
Forward and backword_2
G:
Gram matrix
Getattr()
H:
Hasattr()
L:
LSTM
List:
List.extend()
N: - Numpy:
##注意numpy中的var()(计算方差)是有偏估计,实际计算的是样本中心二阶距
##std()(计算标准差)也是根据有偏估计的方差获得的结果
Add()_1
Add()_2
Argmax()
Argsort()
Astype()
Choice()
Concatenate()
Flatten()
Linspace()
Newaxis
Pad()
Prod()
Random.rand() 与 random.randn()_1
Random.rand() 与 random.randn()_2
Random.normal()
Relu()
RMSprop()
Squeeze()
Transpose()
R: - RNN:
RNN基本构架
RNN cs231n_assignment3 Q1
S: - SVM
Forward and backward - Softmax:
Forward and backward_1
Forward and backward_2
T:
Two_layer_net:
Forward and backward