cs231n 作業1 心路歷程

2022-08-15 06:06:14 字數 2056 閱讀 8304

做cs231n的作業的乙個心路歷程,不會重複別人寫好的材料,別人寫的數學分析,**,比我高到不知道**去了

we are here

比較有意思的是裡面計算距離矩陣的三種方法,two_loops,one_loop,no_loop, 完全平方公式還有python中的broadcast比較有意思,還是能學到東西的。

最後的交叉驗證,之前在博哥的ml課上做過。所以就skip了

趕緊看模態融合啊,先鴿了,明天之後再寫這個。(2019.12.16)

梯度怎麼求,這誰記得住啊?救

回憶svm的loss

scores = x[i].dot(w)

注意到這裡是x[i]在前,w在後,x的shape是(500, 3073),那麼x[i]便是乙個長度為3073的行向量,而w是(3073, 10)。

第i張在第j個分類的得分只與w的第j列有關,所以當margin > 0即有loss的時候,需要調整w使錯誤分類的得分變低,使正確分類的得分變高。

從這裡的分析可以看出,對於w的這一列,直接求偏導,對第j列就是x[i],對第y[i](正確標籤)列就是-x[i](求偏導就當求導,多看兩遍,我數學這麼爛都看懂了)

不過對於最後的正則化項為什麼要這麼寫我還是很疑惑的dw += 2 * reg * w老陳問號.jpg

沒有迴圈的矩陣運算有點騷,看濕了。

寫完兩個loss還有train和predict的**要寫,其實比前面的好寫多了,因為不用算梯度

learning_rates = [1e-7, 5e-5] # 第二個lr要加乙個小數點才能收斂,不然就炸了

調了半天以為前面code寫錯了,學習率過大導致每一步都跑過了,然後loss**,再加乙個小數點就好了,感覺這個lr寫這是故意讓人理解的

主要看了這裡和原來的課件,卡的地方還是求梯度的過程

val過程其實和前面很像,我好菜啊

兩層的全聯通網路,啟用函式在第一層maximum(h, 0),scores很好算,loss可以直接抄softmax的,算梯度數學太差逃了,抄這裡的

另外需要完成train和predict兩個函式,和linear_classifier差不多,複製過來該一些變數就行(這個不涉及數學,一點都不慌)

toy_data和toy_model真的是除錯神器,而且寫一小段就有乙個check點不要太舒服,那麼問題來了,自己寫這種東西的時候check資料哪來呢

「tweaking hyperparameters by hand can be fun」那麼現在調參都一天試一組引數?這個for迴圈寫的感覺有點奢侈啊,而且超參啥的感覺都是xjb寫,調參玄學?遇到再說吧,感覺現在自己的功力還沒到調參這一步就死掉了

前面是直接把畫素直接扔進模型裡,這乙個part是首先提取出的feature然後把feature作為model的輸入訓練

要寫的**就是直接的調參,複製過來改一下引數,feature計算比畫素點小很多,自然速度快很多

注意到nn的最好的一組超參達到了60%的準確率,題面描述的最佳效果,頭禿了一晚上這個時候感覺最爽

第一次作業使用numpy實現了knn, svm, softmax, 兩層全聯通網路,還有設計影象feature然後調參訓練

說是實現其實抬舉自己了,本來的**寫的非常優雅,讀起來賞心悅目。只要在挖空的地方填上loss, train, predict之類的就好

數學菜的扣腳,各種梯度不會算,往回翻了課件最後還是跌跌撞撞網上各種抄才寫完模型裡的**,我靠numpy真騷

不過正兒八經上戰場應該還是cuda()吧,沒能完全靠自己寫完這些code,至少也都認真讀了一遍,調參過程倒是熟練

多認識了不少超參,實實在在理解了這幾個模型,至少以後別人問到自己不會一問三不知了,ok,下一課

學校要三月開學了,被困在農村裡,這乙個晚上的效率感覺是過去一周,不,乙個月的總和,希望狀態能保持

希望早日能見到夏天的陽光,夏天的young : )

cs231n 課程作業 Assignment 1

趁著在學校的時間,跟著 cs231n 的課程做了一下作業,感覺收穫特別大,現在彙總在部落格裡。下面是一些官方的課程資料 網頁備註 課程主頁 主頁課程介紹,瀏覽器也可以跑深度學習 課程官方筆記 貌似要 fq 軟體支援 syllabus 還有一些其他有用的非官方資料 網頁備註 課程中文翻譯 網易雲課堂提...

CS231n 程式設計作業環境配置

感謝琦爺的幫助!作業需要在linux系統上面完成,不能使用windows系統,為什麼呢?於是我在 windows powershell中嘗試了一下,第一行命令 cd cs231n datasets 成功了,因為dos平台下也有cd命令,所以是可以使用的 第二行命令 get datasets.sh 執...

cs231n筆記總結

cs231n的課程以及作業都完成的差不多了,後續的課程更多的涉及到卷積神經網路的各個子方向了,比如語義分割 目標檢測 定位 視覺化 遷移學習 模型壓縮等等。assignment3有涉及到這些中的一部分,但需要深入了解的話還是得看 了。所以在看 前把之前已學的知識,筆記和作業 一起做個整理。部落格裡主...