In [ ]:
'''
http://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/
'''

In [3]:
import numpy as np

In [8]:
def softmax_overflow(x):
    exps = np.exp(x)
    return exps / np.sum(exps)

In [11]:
softmax_overflow([1000, 2000, 5000])


C:\Users\shuhua\AppData\Local\Continuum\Anaconda3\envs\tensorflow\lib\site-packages\ipykernel\__main__.py:2: RuntimeWarning: overflow encountered in exp
  from ipykernel import kernelapp as app
C:\Users\shuhua\AppData\Local\Continuum\Anaconda3\envs\tensorflow\lib\site-packages\ipykernel\__main__.py:3: RuntimeWarning: invalid value encountered in true_divide
  app.launch_new_instance()
Out[11]:
array([ nan,  nan,  nan])

In [12]:
def softmax(x):
    shiftx = x - np.max(x)
    exps = np.exp(shiftx)
    return exps / np.sum(exps)

In [13]:
softmax([1000, 2000, 5000])


Out[13]:
array([ 0.,  0.,  1.])

In [ ]: