什么是计算Sigmoid最快的方法?

3

我正在尝试实现一个循环神经网络,其中选择sigmoid作为激活函数。

我的第一个原型是用Python编写的,我发现sigmoid在程序中成为瓶颈,约占总运行时间的30%。

# x is a fixed size vector here
def sigmoid(x):
    return numpy.reciprocal(1.0 + numpy.exp(-x))

于是我尝试了另一种实现方式。

def sigmoid(x):
    y = numpy.exp(x)
    return y/(1+y)

令人惊讶的是,我发现这种方法比第一种方法快50%。

我还尝试了第三种方法。

def sigmoid(x):
    return (1.0+numpy.tanh(x/2.0))/2.0

第二种方法比第一种略慢。

后来我在C++中测试了这3种实现。前两种方法几乎没有区别,而tanh稍微快一些(约5%)。为什么会这样?我想numpy是用C++编写的。

1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接