这是我在多层感知器网络中一个神经元的代码:
double summation = 0;for (int i = 0; i < weights.length; i++) { summation += inputs[i] * weights[i];}double normalized = Math.tanh(summation);if (normalized > 0.9 || normalized < -0.9) { activated = 1;} else { activated = 0;}
我认为这是错误的。输出应该是归一化后的值,还是应该始终限制在0或1之间?
回答:
你可以简单地使用输出的符号,但通常情况下,神经元的输出需要是连续且可微分的,因此使用-1到1之间的实数值(因为你选择了tanh函数)会更合适,特别是如果你打算使用反向传播来训练模型的话。