快速sigmoid函数进行改进
深度学习经常要用到sigmoid函数,这里对fast sigmoid进行了改进的
sigmoid的公式:
sigmoid(x)=1/(1+exp(-1))
exp的计算耗时较长,这里改用快速sigmoid fast sigmoid
fast_sigmoid(x)=0.5*(x/(1+|x|) + 1)
可见差距还是挺大的,这里可以再次改进,进一步拟合曲线
改进以后的就是
fast_sigmoid_v2(x)=0.5*(x/((0.99/|x|)+|x|) + 1)
可以发现拟合结果变得更好了,几乎重合了的
显示
import numpy as np
import matplotlib.pyplot as plt
def showfile():
x = np.linspace(-10, 10, 1000)
y1=[1/(1+np.exp(-i)) for i in x]
y2=[]
y3=[]
for i in x:
y2.append(0.5*(i/(0.99/np.abs(i)+np.abs(i)) + 1 ))
for i in x:
y3.append(0.5*(i/(1+np.abs(i)) + 1))
plt.plot(x, y1,c='b')
plt.plot(x, y2,c='m')
plt.plot(x, y3,c='#FF8C00')
plt.legend(loc='upper left', labels=['common sigmoid','fastv2 sigmoid','fast sigmoid'])
plt.axhline(y=0.5, xmin=-10, xmax=10,color="grey", line)
plt.axvline(x=0, ymin=0, ymax=1,color="grey", line)
plt.show()
if __name__ == '__main__':
showfile()
neural network - Fast sigmoid algorithm - Stack Overflowhttps://stackoverflow.com/questions/10732027/fast-sigmoid-algorithm



