日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对tf.nn.softmax的理解

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对tf.nn.softmax的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Softmax的含義:Softmax簡單的說就是把一個N*1的向量歸一化為(0,1)之間的值,由于其中采用指數運算,使得向量中數值較大的量特征更加明顯。

如圖所示,在等號左邊部分就是全連接層做的事。

  • W是全連接層的參數,我們也稱為權值;W是全連接層的參數,是個T*N的矩陣,這個N和X的N對應,T表示類別數,比如你進行手寫數字識別,就是10個分類,那么T就是10。
  • X是全連接層的輸入,也就是特征。從圖上可以看出特征X是N1的向量,他就是由全連接層前面多個卷積、激活和池化層處理后得到的;
    舉一個例子,假設全連接層前面連接的是一個卷積層,這個卷積層的輸出是64個特征,每個特征的大小是7X7,那么在將這些特征輸入給全連接層之前會將這些特征通過tf.reshape轉化為成N1的向量(這個時候N就是64X7X7=3136)。
    我們所說的訓練一個網絡,對于全連接層而言就是尋找最合適的W矩陣。因此全連接層就是執行WX得到一個T1的向量(也就是圖中的logits[T1]),這個向量里面的每個數都沒有大小限制的,也就是從負無窮大到正無窮大。然后如果你是多分類問題,一般會在全連接層后面接一個softmax層,這個softmax的輸入是T1的向量,輸出也是T1的向量(也就是圖中的prob[T*1],這個向量的每個值表示這個樣本屬于每個類的概率),只不過輸出的向量的每個值的大小范圍為0到1。
  • softmax函數,或稱歸一化指數函數,是邏輯函數的一種推廣。它能將一個含任意實數的K維向量A “壓縮”到另一個K維實向量 A' 中,使得A' 每一個元素的范圍都在(0,1)之間,并且所有元素的和為1。

    該函數的形式可以按下面的式子給出:

    可能大家一看到公式就有點暈了,別被嚇跑,我來簡單解釋一下。這個公式的意思就是說得到的A'向量中的每個元素的值,是由A中對應元素的指數值除以A中所有元素的指數值的總和。

    舉個例子:假設你的A =[1,2,3],那么經過softmax函數后就會得到A' = [0.09, 0.24, 0.67],A'的三個元素分別是怎么來的呢?

    A'的第1個元素 ?= exp(1) / (exp(1) + exp(2) + exp(3)) = 0.09(這里exp即為e)

    A'的第2個元素 ?= exp(2) / (exp(1) + exp(2) + exp(3)) = 0.24

    A'的第3個元素 ?= exp(3) / (exp(1) + exp(2) + exp(3)) = 0.67

    由于Softmax函數的這個特點,經常會被用在神經網絡來解決分類問題中,得到的結果就可以認為是滿足各種分類的概率。

    弄懂了softmax,就要來說說softmax loss了。
    那softmax loss是什么意思呢?如下:

    首先L是損失。Sj是softmax的輸出向量S的第j個值,前面已經介紹過了,表示的是這個樣本屬于第j個類別的概率。yj前面有個求和符號,j的范圍也是1到類別數T,因此y是一個1*T的向量,里面的T個值,而且只有1個值是1,其他T-1個值都是0。那么哪個位置的值是1呢?答案是真實標簽對應的位置的那個值是1,其他都是0。所以這個公式其實有一個更簡單的形式:

    當然此時要限定j是指向當前樣本的真實標簽。

    來舉個例子吧。假設一個5分類問題,然后一個樣本I的標簽y=[0,0,0,1,0],也就是說樣本I的真實標簽是4,假設模型預測的結果概率(softmax的輸出)p=[0.1,0.15,0.05,0.6,0.1],可以看出這個預測是對的,那么對應的損失L=-log(0.6),也就是當這個樣本經過這樣的網絡參數產生這樣的預測p時,它的損失是-log(0.6)。那么假設p=[0.15,0.2,0.4,0.1,0.15],這個預測結果就很離譜了,因為真實標簽是4,而你覺得這個樣本是4的概率只有0.1(遠不如其他概率高,如果是在測試階段,那么模型就會預測該樣本屬于類別3),對應損失L=-log(0.1)。那么假設p=[0.05,0.15,0.4,0.3,0.1],這個預測結果雖然也錯了,但是沒有前面那個那么離譜,對應的損失L=-log(0.3)。我們知道log函數在輸入小于1的時候是個負數,而且log函數是遞增函數,所以-log(0.6) < -log(0.3) < -log(0.1)。簡單講就是你預測錯比預測對的損失要大,預測錯得離譜比預測錯得輕微的損失要大。

    理清了softmax loss,就可以來看看cross entropy了。
    corss entropy是交叉熵的意思,它的公式如下:

    是不是覺得和softmax loss的公式很像。當cross entropy的輸入P是softmax的輸出時,cross entropy等于softmax loss。Pj是輸入的概率向量P的第j個值,所以如果你的概率是通過softmax公式得到的,那么cross entropy就是softmax loss。

    轉載內容,根據自己理解稍作修改,原文連接為:
    https://blog.csdn.net/u014380165/article/details/77284921

    參考自:https://blog.csdn.net/wgj99991111/article/details/83586508

    https://blog.csdn.net/kevindree/article/details/87365355

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的对tf.nn.softmax的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。