斯坦福CS231n課程作業# 3簡介
原文如下
在本作業中,你將實現循環網路,並將其應用於在微軟的COCO資料庫上進行圖像標註。我們還會介紹TinyImageNet數據集,然後在這個數據集使用一個預訓練的模型來查看圖像梯度的不同應用。本作業的目標如下:
- 理解循環神經網路(RNN)的結構,知道它們是如何隨時間共享權重來對序列進行操作的。
- 理解普通循環神經網路和長短基記憶(Long-Short Term Memory)循環神經網路之間的差異。
- 理解在測試時如何從RNN生成序列。
- 理解如何將卷積神經網路和循環神經網路結合在一起來實現圖像標註。
- 理解一個訓練過的卷積神經網路是如何用來從輸入圖像中計算梯度的。
- 進行高效的交叉驗證並為神經網路結構找到最好的超參數。
- 實現圖像梯度的不同應用,比如顯著圖,搞笑圖像,類別可視化,特徵反演和DeepDream。
安裝
有兩種方法來完成作業:在本地使用自己的機器,或者使用http://Terminal.com的虛擬機。
雲端作業
Terminal公司為我們的課程創建了一個單獨的子域名:www.stanfordterminalcloud.com。在該域名下註冊。作業2的快照可以在這裡找到。如果你註冊到了本課程,就可以聯繫上助教(更多信息請上Piazza)來得到用來做作業的點數。一旦你啟動了快照,所有的環境都是為你配置好的,馬上就可以開始作業。我們在Terminal上寫了一個簡明教程。
本地作業
點擊此處下載代碼壓縮文件。初次之外還有些庫間依賴的配置:
[選項1]使用Anaconda:推薦方法是安裝Anaconda,它是Python的一個發布版,包含了最流行的科研、數學、工程和數據分析Python包。一旦安裝了它,下面的提示就都可略過,準備直接開始寫作業吧。譯者註:推薦。
[選項2]手動安裝,虛擬環境:如果你不想用Anaconda,想要走一個充滿風險的手動安裝路徑,那麼可能就要為項目創建一個虛擬環境了。如果你不想用虛擬環境,那麼你的確保所有代碼需要的依賴關係都是景在你的機器上被安裝了。要建立虛擬環境,運行下面代碼:
cd assignment3sudo pip install virtualenv # This may already be installedvirtualenv .env # Create a virtual environmentsource .env/bin/activate # Activate the virtual environmentpip install -r requirements.txt # Install dependencies# Work on the assignment for a while ...deactivate # Exit the virtual environment
下載數據:一旦得到作業初始代碼,你就需要下載CIFAR-10數據集,然後在assignment1目錄下運行下面代碼:譯者註:也可手動下載解壓後放到cs231n/datasets目錄。
cd cs231n/datasets ./get_coco_captioning.sh./get_tiny_imagenet_a.sh./get_pretrained_model.sh
編譯Cython擴展包:卷積神經網路需要一個高效的實現。我們使用Cython實現了一些函數。在運行代碼前,你需要編譯Cython擴展包。在cs231n目錄下,運行下面命令:
python setup.py build_ext --inplace
啟用IPython:得到了CIFAR-10數據集之後,你應該在作業assignment1目錄中啟用IPython notebook的伺服器,如果對IPython notebook不熟悉,可以閱讀教程。
注意:如果你是在OSX上的虛擬環境中工作,可能會遇到一個由matplotlib導致的錯誤,原因在這裡。你可以通過在assignment2目錄中運行start_ipython_osx.sh腳本來解決問題。
提交作業
無論你是在雲終端還是在本地完成作業,一旦完成作業,就運行collectSubmission.sh腳本;這樣將會產生一個assignment3.zip的文件,然後將這個文件上傳到你的dropbox中這門課的作業頁面。
Q1:使用普通RNN進行圖像標註(40分)
IPython Notebook文件RNN_Captioning.ipynb將會帶你使用普通RNN實現一個在微軟COCO數據集上的圖像標註系統。
Q2:使用LSTM進行圖像標註(35分)
IPython Notebook文件LSTM_Captioning.ipynb將會帶你實現LSTM,並應用於在微軟COCO數據集上進行圖像標註。
Q3:圖像梯度:顯著圖和高效圖像(10分)
IPython Notebook文件ImageGradients.ipynb將會介紹TinyImageNet數據集。你將使用一個訓練好的模型在這個數據集上計算梯度,然後將其用於生成顯著圖和高效圖像。
Q4:圖像生成:類別,反演和DeepDream(30分)
在IPython Notebook文件ImageGeneration.ipynb中,你將使用一個訓練好的TinyImageNet模型來生成圖像。具體說來,你將生成類別可視化,實現特徵反演和DeepDream。
Q5:做點兒其他的!(+10分)
根據作業內容,做點夠酷的事兒。比如作業中沒有講過的其他生成圖像的方式?
全文完。
譯者反饋:
- 轉載須全文轉載並註明原文鏈接,否則保留維權權利;
- 如對翻譯有意見建議,請通過評論批評指正,貢獻者均會補充提及;
- 後續將根據作業內容和自己的學習筆記原創教程;
- 感謝@Frankenstein的糾錯。
推薦閱讀:
※這篇沒有乾貨沒有知識點不關於機器學習深度學習推薦系統。。
※平安銀行的機器學習實踐
※機器學習各語言領域工具庫匯總-中文版
※吳恩達深度學習課程課後習題(第一課第二周)
TAG:机器学习 | 神经网络 | 深度学习DeepLearning |