2017-04-03 56 views
0

我想實現圖片識別神經網絡, 我面臨的一個問題...其中激活功能使用了0到9

當我使用雙曲線函數,我得到很好的結果,但他們是介於0和1.我需要獲得0和9之間的結果,

當我使用線性激活函數時,數字變得非常大,導致在javascript中產生了InfinityNaN

當我使用SoftPlus時,數字變得非常小,導致NaN ...我應該使用什麼激活函數?

+0

btw我在輸入圖層上有252個神經元,在隱藏圖層上有10個和10個,在輸出圖層上有1個 – durisvk10

回答

0

您必須在[0,9]範圍內對輸出進行標準化(假設爲連續輸出),以便在[0,1]範圍內得到標準化輸出,然後使用S形激活。

如果你想要一個從0到9(整數)的離散輸出,那麼這是一個分類問題,你應該使用softmax激活。

0

我看到你正在使用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); 
    }, 

而且將此激活函數分配給您的輸出神經元/節點。