2017-02-09 92 views
2

我想實現一個循環神經網絡,其中sigmoid被選爲激活函數。什麼是計算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++編寫的。

回答

相關問題