这是逻辑S形函数:
我知道x。我现在如何在Python中计算F(x)?
假设x = 0.458。
F(x)=?
应该这样做:
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
现在,您可以通过调用以下命令进行测试:
>>> sigmoid(0.458)
0.61253961344091512
更新:请注意,以上内容主要旨在将给定表达式直接一对一转换为Python代码。它没有经过测试或已知是数字上正确的实现。如果您知道您需要一个非常强大的实现,那么我相信其他人实际上已经对此问题进行了一些思考。
只是因为我经常需要它来尝试一些小事情:
sigmoid = lambda x: 1 / (1 + math.exp(-x))
这不适用于x的极大负值。我一直在使用这个不幸的实现,直到我发现它正在创建NaN。
如果用替换
math.exp
,np.exp
则不会得到NaN,尽管会收到运行时警告。math.exp
与numpy数组一起使用会产生一些错误,例如:TypeError: only length-1 arrays can be converted to Python scalars
。为了避免它,您应该使用numpy.exp
。可以通过
x = max(-709,x)
在表达式前添加来减轻数值不稳定性吗?