【发布时间】:2021-01-30 00:48:58
【问题描述】:
我有大量的浮点类型(3.7625745528893614e-83)必须通过sigmoid函数:
def sigmoid_one(x):#sigmoid computation function
return (1/(1+math.e**(-x)))
,但是通过函数传递一个很大的数字(即小数点后有很多字符的数字)后,总是得到0.5。对于解决方案,我想尝试使用 round() 函数:
round(3.7625745528893614e-83,10)
,但在计算后它给出零。有谁知道这个问题的解决方案?或许有替代 round() 函数或替代解决方案?
【问题讨论】:
-
这不是很大的一部分。这是一个非常小的数字。注意
e-83,它的意思是“10 的负 83 次方”。 -
您为什么希望四舍五入会有所帮助?
-
这是逻辑函数的标准行为。
sigmoid_one(0)是 0.5,您的输入几乎为零(足够接近float的内部舍入以消除差异)。 -
这个问题并不重要,但你永远不应该使用
math.e**(something)。请改用math.exp(something)。它更准确,也可能更快。
标签: python algorithm math rounding sigmoid