cs231n訓練營學習筆記(6)

2021-10-01 16:02:17 字數 1154 閱讀 9654

跑**,softmax

最開始,寫softmax_loss_*****用迴圈求loss和gradient

softmax分類器使用交叉熵loss,公式為

程式設計實現時候稍微利用了廣播,10個分數一起算的

for i in range(num_train):

scores = x[i].dot(w)

scores -= max(scores)#避免溢位

scores = np.exp(scores) / np.sum(np.exp(scores))

loss += - np.log(scores[y[i]])

為什麼初始計算出來的loss約等於0.1

因為初始w約等於0,按照公式計算,相當於

求導計算上面的公式,得到梯度,過程很多,但是最後基本上都約掉了

if j == y[i]:

dw[:,j] += (** - 1) * x[i]

else:

dw[:,j] += ** * x[i]

**是log裡面那部分

接下來向量化

scores = x.dot(w)

scores -= np.max(scores, axis=1, keepdims=true)

scores = np.exp(scores) / np.sum(np.exp(scores), axis=1, keepdims=true)

dw = np.copy(scores)

dw[range(num_train),y] -= 1

dw = x.t.dot(dw)

loss -= np.log(scores[range(num_train),y])

loss = np.sum(loss)

這裡注意:dw[range(num_train),y]和dw[:,y]並不一樣,shape分別是(500,) 和(500, 500)

第一種是每次是第i行和y[i]構成元組,取dw[i,y[i]],第二種是所有行和y[i]

剩下的部分和svm類似

cs231n訓練營學習筆記(9)卷積和池化

卷積具有部分連線和權重共享的特徵,共享的權重就是卷積核,因為它劃過所有影象分別和影象切片相乘,相當於很多的卷積核共同組成權重。從函式角度解讀卷積神經網路工作原理 每個卷積核 感受野receptive field 對應輸出乙個啟用對映 activation map 每層convnet由多個卷積核輸出的...

CS231n 學習筆記(五)

注意 在計算機上計算梯度的乙個簡單方法是有限差分法 迭代計算所有w維度,一直重複下去直到計算完dw。這種方法是數值梯度法,過程非常慢。實際上,我們會使用另一種分析梯度法,提前計算出梯度的表示式 除錯策略 使用數值梯度作為單元測試來確保解析梯度是正確的 梯度下降演算法 注意 隨機梯度下降 之前我們定義...

cs231n筆記總結

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