这是我斯坦福CS231n (2016冬季 1月-3月)作业2/3的答案。
目前的答案代码大多基于python2的环境,而且提供的.ipynb文件不是很适合编辑和debug。这篇作业可以在Python 3.7的环境中运行。
我的完成环境是:Windows 10 + Pychram + Python 3.7.
使用时,请恰当地对于每一功能块,注释或取消注释。每一块都有起始提示符和结束提示符。例如,
#### Start: Test softmax and SVM in layers.py ####
& #### End: Test softmax and SVM in layers.py ####
建议在使用本作业的时候,配合课程提供的相应.ipynb文件。
关于数据集下载:
根据课程作业提供的方法使用 \cs231n\datasets 中的 get_datasets.sh
或者用纯文本编辑器打开get_datasets.sh
,然后根据里面的提示下载数据集。
根据课程作业提供的方法使用 \cs231n\datasets 中的 get_datasets.sh
get_tiny_imagenet_a.sh
get_pretrained_model.sh
get_coco_captioning.sh
或者分别用纯文本编辑器(例如Sublime)打开以上三个文件,复制下载链接,开始下载,之后解压压缩包(均依照文件内的指示)。
如果出现了 pretrained_model.txt,备份之后直接重命名为 pretrained_model.h5
这是我尝试过的网络中表现最好的,具体结构如下:
INPUT --> [CONV --> RELU --> POOL]*2 --> [CONV --> RELU] --> FC/OUT
这Train the Net部分,得到的结果如下:
(Epoch 1 / 1) train acc: 0.470000; val_acc: 0.483000
我还尝试了以下的网络:
**INPUT --> [CONV --> RELU --> POOL]*2 --> [CONV --> RELU] --> FC --> ReLU --> FC/OUT **
INPUT --> [CONV --> ReLU]*2 --> [FC --> ReLU]*2 --> FC/OUT
INPUT --> [CONV --> ReLU]*2 --> POOL --> [FC --> ReLU]*2 --> FC/OUT
这些网络在训练时表现都欠佳,不过可以增大Solver()
中的 num_epochs
来获得更好的效果。
The default decode method of pickle.load() is encodeing=“ASCII”. If the file to load is not in the saving form of ASCII, we need to choose a parameter in encoding.
encoding=‘bytes’ means load 8-bits string in the form of bytes.
The original Y = datadict[‘labels’] X = datadict[‘data’] need to do this transfer. In 3, str is unicode(default); in 2, str is bytes(default), b’’ mindicates byte.
No meaning of b’’ in 2, only to be compatible with 3.
Here to add b is to let code of 2 to suit code in 3
just a difference between 2 and 3.
In python 2, / only keep the integer part, while the decimal part is abandoned. So the result is int .
In python 3, the result of / is float. You can use // to get int result.
You may come across it when you use range(), the parameter in bracket may be the result of a division.
the feedback of range() is range object, if you wanna a list. Transfer the
a = range(0,N)
intoa = list(range(0,N))
You may come across error report concerning to the module scipy.misc. The most possible solution is to install PIL, by
pip install -U PIL
. The specific reason can take this website as reference. https://stackoverflow.com/questions/15345790/scipy-misc-module-has-no-attribute-imread#
对老师源程序的修改类似Assignment2。
在LSTM_Captioning中,使用了 BLEU_score 作为评价模型好坏的标准。
代码下载的地址是:
https://github.com/rrryan2016/CS231N-Assignment