import numpy as np
def softmax(x):
row_num = x.shape[0]
col_num = x.shape[1]
for m in row_num:
for n in col_num:
new_x[m,n] = np.exp(x[m,n])/sum(x[:,n])
return new_x
logits = [1.0, 2.0, 3.0]
logits2 = np.array([
[1, 2, 3, 6],
[2, 4, 5, 6],
[3, 8, 7, 6]])
print(softmax(logits1))
print(softmax(logits2))
以上爲SOFTMAX函數(它是用來開啓logits到概率)的Python:定義SOFTMAX功能
欲獲得如下所示的解決方案:
[ 0.09003057 0.24472847 0.66524096]
[
[ 0.09003057 0.00242826 0.01587624 0.33333333]
[ 0.24472847 0.01794253 0.11731043 0.33333333]
[ 0.66524096 0.97962921 0.86681333 0.33333333]
]
然而,錯誤顯示「'int'對象不可迭代」。另外,我希望看到一個更加高效的代碼,這個函數的複雜度較低。
感謝您的解決方案。但是當我運行你的代碼時,它顯示「'list'對象沒有屬性'形狀'」 – FortranFun
@FortranFun在我的解決方案中,我沒有使用形狀,所以我猜你在添加範圍後運行你的解決方案。這種情況下的問題是logits是一維向量,因此logits.shape是一個帶有一個數字的元組,因此您無法訪問logits.shape [1]。 \t 此外,寫logits = np.array([1.0,2.0,3.0])(你的logits不是numpy數組,而logits2是,你需要使它成爲一個numpy數組,以便它具有shape屬性)。 –