1. 程式人生 > 程式設計 >python編寫softmax函式、交叉熵函式例項

python編寫softmax函式、交叉熵函式例項

python編寫softmax函式、交叉熵函式例項

python程式碼如下:

import numpy as np
 
# Write a function that takes as input a list of numbers,and returns
# the list of values given by the softmax function.
def softmax(L):
 pass
 expL = np.exp(L)
 sumExpL = sum(expL)
 result = []
 for i in expL:
  result.append(i*1.0/sumExpL)
 return result

python編寫交叉熵公式:

import numpy as np
 
def cross_entropy(Y,P):
 Y = np.float_(Y)
 P = np.float_(P)
 return -np.sum(Y * np.log(P) + (1 - Y) * np.log(1 - P))

補充知識:分類時,為什麼不使用均方誤差而是使用交叉熵作為損失函式

MSE(均方誤差)對於每一個輸出的結果都非常看重,而交叉熵只對正確分類的結果看重。

例如:在一個三分類模型中,模型的輸出結果為(a,b,c),而真實的輸出結果為(1,0),那麼MSE與cross-entropy相對應的損失函式的值如下:

MSE:

python編寫softmax函式、交叉熵函式例項

cross-entropy:

python編寫softmax函式、交叉熵函式例項

從上述的公式可以看出,交叉熵的損失函式只和分類正確的預測結果有關係,而MSE的損失函式還和錯誤的分類有關係,該分類函式除了讓正確的分類儘量變大,還會讓錯誤的分類變得平均,但實際在分類問題中這個調整是沒有必要的。

但是對於迴歸問題來說,這樣的考慮就顯得很重要了。所以,迴歸問題熵使用交叉上並不合適。

以上這篇python編寫softmax函式、交叉熵函式例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。