當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy special.softmax用法及代碼示例


本文簡要介紹 python 語言中 scipy.special.softmax 的用法。

用法:

scipy.special.softmax(x, axis=None)#

計算 softmax 函數。

softmax 函數通過計算每個元素的 index 除以所有元素的 index 之和來轉換集合的每個元素。也就是說,如果 x 是一維 numpy 數組:

softmax(x) = np.exp(x)/sum(np.exp(x))

參數

x array_like

輸入數組。

axis int 或整數元組,可選

沿計算值的軸。默認為無,softmax 將在整個數組 x 上計算。

返回

s ndarray

與 x 形狀相同的數組。結果將沿指定軸求和為 1。

注意

向量 的softmax函數 的公式是

softmax 函數是 logsumexp 的梯度。

該實現使用移位來避免溢出。有關更多詳細信息,請參閱[1]。

參考

[1]

P. 布蘭查德,D.J. Higham, N.J. Higham,“準確計算 log-sum-exp 和 softmax 函數”,IMA 數值分析雜誌,第 41 卷(4),DOI:10.1093/imanum/draa038

例子

>>> import numpy as np
>>> from scipy.special import softmax
>>> np.set_printoptions(precision=5)
>>> x = np.array([[1, 0.5, 0.2, 3],
...               [1,  -1,   7, 3],
...               [2,  12,  13, 3]])
...

計算整個數組的 softmax 變換。

>>> m = softmax(x)
>>> m
array([[  4.48309e-06,   2.71913e-06,   2.01438e-06,   3.31258e-05],
       [  4.48309e-06,   6.06720e-07,   1.80861e-03,   3.31258e-05],
       [  1.21863e-05,   2.68421e-01,   7.29644e-01,   3.31258e-05]])
>>> m.sum()
1.0

沿第一個軸(即列)計算 softmax 變換。

>>> m = softmax(x, axis=0)
>>> m
array([[  2.11942e-01,   1.01300e-05,   2.75394e-06,   3.33333e-01],
       [  2.11942e-01,   2.26030e-06,   2.47262e-03,   3.33333e-01],
       [  5.76117e-01,   9.99988e-01,   9.97525e-01,   3.33333e-01]])
>>> m.sum(axis=0)
array([ 1.,  1.,  1.,  1.])

沿第二個軸(即行)計算 softmax 變換。

>>> m = softmax(x, axis=1)
>>> m
array([[  1.05877e-01,   6.42177e-02,   4.75736e-02,   7.82332e-01],
       [  2.42746e-03,   3.28521e-04,   9.79307e-01,   1.79366e-02],
       [  1.22094e-05,   2.68929e-01,   7.31025e-01,   3.31885e-05]])
>>> m.sum(axis=1)
array([ 1.,  1.,  1.])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.special.softmax。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。