2011-11-28 113 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)。 –