Timings, before:
>>> x = np.linspace(-1000, 1000, 10000)
>>> %timeit logistic_sigmoid(x)
1000 loops, best of 3: 570 us per loop
After:
>>> %timeit logistic_sigmoid(x)
1000 loops, best of 3: 286 us per loop
For comparison:
>>> %timeit np.tanh(x)
10000 loops, best of 3: 117 us per loop
>>> %timeit .5 * (1 + np.tanh(x/2.))
1000 loops, best of 3: 301 us per loop
TODO: optimize log_logistic_sigmoid.