我想實現圖片識別神經網絡, 我面臨的一個問題...其中激活功能使用了0到9
當我使用雙曲線函數,我得到很好的結果,但他們是介於0和1.我需要獲得0和9之間的結果,
當我使用線性激活函數時,數字變得非常大,導致在javascript中產生了Infinity
和NaN
。
當我使用SoftPlus時,數字變得非常小,導致NaN
...我應該使用什麼激活函數?
我想實現圖片識別神經網絡, 我面臨的一個問題...其中激活功能使用了0到9
當我使用雙曲線函數,我得到很好的結果,但他們是介於0和1.我需要獲得0和9之間的結果,
當我使用線性激活函數時,數字變得非常大,導致在javascript中產生了Infinity
和NaN
。
當我使用SoftPlus時,數字變得非常小,導致NaN
...我應該使用什麼激活函數?
您必須在[0,9]範圍內對輸出進行標準化(假設爲連續輸出),以便在[0,1]範圍內得到標準化輸出,然後使用S形激活。
如果你想要一個從0到9(整數)的離散輸出,那麼這是一個分類問題,你應該使用softmax激活。
我看到你正在使用Javascript。我建立了一個高度可定製的javascript神經網絡庫。檢查出來here。它具有不同的內置激活功能here,但它們很容易修改!
所以物流的功能是這樣寫的:
LOGISTIC : function(x, derivate) {
if (!derivate)
return 1/(1 + Math.exp(-x));
var fx = Activation.LOGISTIC(x);
return fx * (1 - fx);
},
所以,如果你希望你的輸出爲0到9之間,你可以創建一個自定義的邏輯激活功能:
CUSTOM_LOGISTIC : function(x, derivate) {
if (!derivate)
return 1/(1 + Math.exp(-x)) * 9;
var fx = Activation.CUSTOM_LOGISTIC(x);
return fx * (1 - fx);
},
而且將此激活函數分配給您的輸出神經元/節點。
btw我在輸入圖層上有252個神經元,在隱藏圖層上有10個和10個,在輸出圖層上有1個 – durisvk10