2011-11-28 112 views

回答

3

重量範圍取決於您擁有的輸入數據範圍。在一些實現中,權重也可以是負的。

對於可能乙狀結腸功能,點擊這裏(正切不是唯一的可能性):

http://en.wikipedia.org/wiki/Sigmoid_function

提示:您可以用通常矩陣乘法計算NN。

http://www.dtreg.com/mlfn.htm

http://en.wikipedia.org/wiki/Neural_network

P.S:可能不是一個好主意,在JavaScript來做到這一點。


你可以通過EXP(x)的實現它,請參閱:http://www.javascripter.net/faq/mathfunc.htm

  sinh(x) exp(x) - exp(-x)  exp(2x) - 1 
tanh(x) = ------- = ------------------ = ------------- 
      cosh(x) exp(x) + exp(-x)  exp(2x) + 1 

,讓你:

function tanh(x) { 
    e = Math.exp(2*x); 
    return (e - 1)/(e + 1) ; 
}; 

另一個解決方案是將一個表的正切函數值,並定義一個JavaScript函數,該函數根據存儲在數組中的tanh值插值x的tanh值


通常人們不希望[-inf ... + inf]作爲輸入值的範圍,並且不希望[-1 ... + 1]作爲輸出值的範圍 - - 因此你可能需要一個不同的sigmoid函數!

您需要取預期的輸入值範圍和輸出值的預期範圍,並使用它們來移動實際的S形函數,權重範圍和閾值。

通常使用0.7或更大的閾值。你需要嘗試一下。

+0

是的,我知道我需要使用哪個函數,但您如何實際執行它?你如何處理返回的價值?你把它與什麼比較? –

+0

對於我的情況tanh和javascript是必須的,忍耐着我:)但我真正感興趣的是它在代碼中的樣子。 –

+0

看到上面的答案 – Tilo

0
this.output = 2/(1 + Math.exp(-2 * input)) - 1; 
+0

這似乎不是我想要使用的功能(http://annet.eeng.nuim.ie/intro/course/chpt3/sigmoid.shtml,在「Tan Sigmoid」下)。但是一旦你有了這個價值,你對它做了什麼? –

+2

做一個litte代數,你會發現當c = 1時,鏈接中的函數等於我發佈的函數。或者只是[問Wolfram Alpha](http://www.wolframalpha.com/input/?i=%28exp%28n%29+-+exp%28-n%29%29+%2F+%28exp%28n%29 +%2B + EXP%28-n的%29%29 +%3D%3D + 2 +%2F +%281 +%2B + EXP%28-2 + N%29%29 + - + 1)。 –