softmax函數(shù)(用于分類)
softmax公式
圖片.png
實現(xiàn)softmax函數(shù)
def softmax(a):
exp_a = np.exp(a)
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
上面的函數(shù)會出現(xiàn)溢出問題,就需要進行一些改進哩都,改進方法如下
圖片.png
可以取C為最大值
def softmax(a):
c = np.max(a)
exp_a = np.exp(a - c) # 溢出對策
sum_exp_a = np.sum(exp_a)
y = exp_a / sum_exp_a
return y
example
a = np.array([0.3, 2.9, 4.0])
y = softmax(a)
print(y)
print(np.sum(y))
softmax函數(shù)的輸出是0.0到1.0之間的實數(shù)。并且婉徘,softmax
函數(shù)的輸出值的總和是1漠嵌。輸出總和為1是softmax函數(shù)的一個重要性質(zhì)。正
因為有了這個性質(zhì)盖呼,我們才可以把softmax函數(shù)的輸出解釋為“概率”儒鹿。
一般而言,神經(jīng)網(wǎng)絡(luò)只把輸出值最大的神經(jīng)元所對應(yīng)的類別作為識別結(jié)果几晤。
并且约炎,即便使用softmax函數(shù),輸出值最大的神經(jīng)元的位置也不會變蟹瘾。