【機器學習】輸出層的設計
阿新 • • 發佈:2019-01-04
神經網路可以用於分類和迴歸問題,但是最後在輸出時需要根據情況來設定輸出層的啟用函式。一般來說,
- 迴歸問題:恆等函式
- 分類問題:
softmax
函式
https://blog.csdn.net/u011240016/article/details/85121601
恆等函式與softmax
函式
恆等函式:輸入 = 輸出
softmax函式
其中 是輸入訊號,即前層神經元的輸出, 是第k個神經元的輸出,n是輸出層神經元的個數。
# softmax
def softmax(x):
return np.exp(x) / np.exp(x).sum()
a = np.array([0.3, 2.9, 4.0])
softmax(a)
softmax處理溢位問題
在分子分母上同時減去某個常數,為了防止溢位,我們可以將 設定為輸入訊號的最大值。
# 防止溢位
def softmax(x):
c = np.max(x)
exp_x = np.exp(x - c)
sum_exp_x = np.sum(exp_x)
return exp_x / sum_exp_x
a = np.array([1010, 1000, 990])
softmax(a) # array([9.99954600e-01, 4.53978686e-05, 2.06106005e-09])
Softmax函式的輸出在0.0~1.0之間,且輸出值的總和為1,所以可以將softmax函式的輸出解釋為概率
。
輸出層的神經元數量
需要根據具體問題來定,比如手寫數字識別,輸出層就設定為10個神經元即可。
END.
完全參考:
《深度學習入門:基於Python的理論和實現》