gpt4 book ai didi

java - 激活函数需要多精确以及它的输入有多大?

转载 作者:行者123 更新时间:2023-11-30 06:52:03 27 4
gpt4 key购买 nike

我正在用 Java 编写一个基本的神经网络,并且正在编写激活函数(目前我刚刚编写了 sigmoid 函数)。我正在尝试使用 double(相对于 BigDecimal),希望训练实际上会花费合理的时间。但是,我注意到该函数不适用于较大的输入。目前我的功能是:

public static double sigmoid(double t){

return (1 / (1 + Math.pow(Math.E, -t)));

}

此函数一直返回非常精确的值,一直到 t = -100 时,但当 t >= 37 时,函数返回 1.0在一个典型的神经网络中,当输入被归一化时这样好吗?神经元的输入总和会超过 ~37 吗?如果馈入激活函数的输入总和的大小从 NN 到 NN 不同,影响它的因素有哪些?另外,有没有什么方法可以使这个函数更精确?是否有更精确和/或更快的替代方案?

最佳答案

是的,在规范化网络中 double 可以使用。但这取决于你的输入,如果你的输入层更大,你的输入总和当然会更大。

我在使用 C++ 时遇到过同样的问题,在 t 变大后,编译器/rte 甚至不考虑 E^-t 并返回普通 1,因为它只计算 1/1 部分。我尝试将已经归一化的输入除以 1000-1000000,有时它会起作用,但有时它不起作用,因为我在第一个时期使用随机输入并且我的输入层是矩阵 784x784。然而,如果您的输入层很小,并且您的输入是标准化的,这将对您有所帮助

关于java - 激活函数需要多精确以及它的输入有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692506/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com