深度學習筆記8 softmax層的實現

2021-07-17 04:30:55 字數 2782 閱讀 5555

softmax回歸模型是logistic回歸模型在多分類問題上的推廣,在多分類問題中,待分類的類別數量大於2,且類別之間互斥。比如我們的網路要完成的功能是識別0-9這10個手寫數字,若最後一層的輸出為[0,1,0, 0, 0, 0, 0, 0, 0, 0],則表明我們網路的識別結果為數字1。

softmax的公式為

在我們的網路中,最後一層是softmax層。

softmax公式為

softmax還有另一種計算方法。假設zk為輸入中的最大值,則softmax也可以寫成這種形式

設softmax的輸出為a,輸入為z,損失函式為loss。則

直接求導可得

所以

通常情況下softmax會被用在網路中的最後一層,用來進行最後的分類和歸一化。所以其實上邊softmax層的反向傳播一般不會用到。

softmax的損失函式使用的是對數損失函式

由於我們的輸入為

若loss對每個輸入z求導,則有

在caffe中,關於softmax層有2種實現,一種是softmaxwithloss,可以計算出loss;另一種為softmax,只計算出每個類別的概率似然值。這樣在實際使用中比較靈活。若只是想得到每個類別的概率似然值,則只需使用softmax層即可,就不需呼叫softmaxwithloss。

softmaxwithloss的配置資訊如下:

layer
該層的型別為softmaxwithloss,可以計算給出每個樣本對應的損失函式值。他有2個輸入層,分別為全連線層2和標籤值label,輸出為求得的多個樣本的loss之和除以樣本數的值。

softmax層的配置資訊如下:

layers
輸出為每個類別的概率值。

caffe中softmax層相關的gpu檔案為\src\caffe\layers\ softmax_layer.cu

caffe中softmaxwithloss層相關的gpu檔案為\src\caffe\layers\ softmax_loss_layer.cu

下面分別介紹

1、softmax層前向計算過程**及注釋如下

template void softmaxlayer::forward_gpu(const vector*>& bottom,

const vector*>& top)

2、softmaxwithloss層前向計算過程**及注釋如下

template void softmaxwithlosslayer::forward_gpu(

const vector*>& bottom, const vector*>& top)

//除以每乙個batch中的樣本數量

top[0]->mutable_cpu_data()[0] = loss / get_normalizer(normalization_,

valid_count);

if (top.size() == 2)

}

1、softmax層反向傳播過程**及注釋如下

template void softmaxlayer::backward_gpu(const vector*>& top,

const vector& propagate_down, const vector*>& bottom)

2、softmaxwithloss層反向傳播過程**及注釋如下

template void softmaxwithlosslayer::backward_gpu(const vector*>& top,

const vector& propagate_down, const vector*>& bottom)

if (propagate_down[0])

//除以batch size

const dtype loss_weight = top[0]->cpu_diff()[0] /

get_normalizer(normalization_, valid_count);

caffe_gpu_scal(prob_.count(), loss_weight , bottom_diff);

}}

數值問題 深度學習 Softmax

softmax函式 上溢和下溢數值穩定 s of tmax xi exi iex softmax x i frac e softma x xi i ex exi 問題 假設所有的x ix i xi 都等於某個常數c textbf c,理論上對所有x ix i xi 上式結果為1 n frac n1 ...

深度學習之softmax回歸

前言 softmax回歸 首先,我們看一下sigmod啟用函式,如下圖,它經常用於邏輯回歸,將乙個real value對映到 0,1 的區間 當然也可以是 1,1 這樣可以用來做二分類。接下來,我們再看一下softmax函式,其函式型別如下 那麼,softmax又是怎麼實現的呢?softmax把乙個...

動手深度學習 筆記 8

機器翻譯 mt 將一段文字從一種語言自動翻譯為另一種語言,用神經網路解決這個問題通常稱為神經機器翻譯 nmt 主要特徵 輸出是單詞序列而不是單個單詞。輸出序列的長度可能與源序列的長度不同。將資料集清洗 轉化為神經網路的輸入minbatch。資料預處理的過程中,我們首先需要對資料進行清洗。字串 單詞組...