簡體   English   中英

二維數組的Softmax function

[英]Softmax function of 2d array

大家好,我有以下形狀 [5,3] 的矩陣,我想獲得 softmax function。

array([[340.        ,  59.33333333, 348.11111111],
       [292.5       ,  46.5       , 297.875     ],
       [301.14285714,  48.28571429, 307.71428571],
       [307.        ,  50.        , 319.28571429],
       [307.77777778,  48.44444444, 313.44444444]])

上述矩陣的名稱是 e_l1,我嘗試了這段代碼,我得到了一個矩陣,但是當我嘗試對每一行求和時,結果不是 1,這意味着我的結果是錯誤的。

e= np.exp(e_l1- np.max(e_l1))
S= np.sum(e,axis=0)
P= e/S

結果我得到了這個:

 [[1.00000000e+00 9.99874329e-01 1.00000000e+00]
 [2.34969834e-21 2.66992811e-06 1.52312011e-22]
 [1.33216272e-17 1.59230195e-05 2.85681188e-18]
 [4.65888615e-15 8.84158760e-05 3.02892988e-13]
 [1.01406710e-14 1.86621235e-05 8.79949929e-16]]

並且作為行總和的結果:

[2.99987433e+00 2.66992811e-06 1.59230195e-05 8.84158763e-05

1.86621235e-05]

有人知道這里發生了什么嗎? 我認為我使用的公式是正確的

似乎您只是為總和使用了錯誤的軸,因為您正在計算每一行的概率,您需要將該行中的每個元素除以同一行中所有元素的總和

e = np.exp(e_l1- np.max(e_l1))
S = np.sum(e,axis=1)
P = e/np.expand_dims(S, 1)

print(P.sum(axis=1))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM