我真的需要帮助在非常基本的神经网络中实现连续的tanh-sigmoid激活功能。如果你能给出一个很棒的基本例子,但如果你能在source code中改变它,我将非常感激!此外,随机权重应该在什么范围内启动(即什么范围)?
答案 0 :(得分:3)
重量范围取决于您拥有的输入数据范围。在一些实现中,权重也可以是负的。
对于可能的Sigmoid函数,请在此处查看(tanh不是唯一的可能性):
http://en.wikipedia.org/wiki/Sigmoid_function
提示:您通常可以使用矩阵乘法计算NN。
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) ;
};
另一种解决方案是将具有tanh函数值的表存储在数组中,并定义一个JavaScript函数,该函数根据存储在数组中的tanh值插入x的tanh值
通常人们不希望[-inf ... + inf]作为输入值的范围,并且不希望[-1 ... + 1]作为输出值的范围 - 因此你可能需要一个不同的sigmoid函数!
您需要获取预期的输入值范围和输出值的预期范围,并使用它们来移动实际的sigmoid函数,权重范围和阈值的值。
通常使用0.7或更大的阈值。你需要试验一下。
答案 1 :(得分:0)
this.output = 2 / (1 + Math.exp(-2 * input)) - 1;