[英]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.