【发布时间】:2017-02-03 04:29:48
【问题描述】:
我正在用 Java 编写一个基本的神经网络,并且正在编写激活函数(目前我刚刚编写了 sigmoid 函数)。我正在尝试使用doubles(与BigDecimal相对),希望培训实际上需要合理的时间。但是,我注意到该函数不适用于较大的输入。目前我的功能是:
public static double sigmoid(double t){
return (1 / (1 + Math.pow(Math.E, -t)));
}
这个函数返回相当精确的值直到t = -100,但是当t >= 37 函数返回1.0。 在典型的神经网络中,当输入被归一化时这样可以吗?神经元会得到总和超过 37 的输入吗?如果输入到激活函数的输入总和的大小从 NN 到 NN 不同,影响它的因素有哪些? 另外,有没有办法让这个函数更精确?有没有更精确和/或更快的替代方法?
【问题讨论】:
标签: java machine-learning neural-network sigmoid activation-function