ソフトマックス関数
2020/12/10
Python3.6.7
ニューラルネットワークなどでよく出る確率に変換するための関数。
numpyを使った方が高速
https://code.tiblab.net/python/numpy/softmax
けど、勉強を兼ねて、pure pythonでの実装
import math
def softmax(xs):
xmax = max(xs)
e_sum = 0
e_xs = []
for x in xs:
e_x = math.exp(x - xmax)
e_xs.append(e_x)
e_sum += e_x
result = []
for e_x in e_xs:
result.append(e_x/e_sum)
return result
scores = [3.0, 1.0, 0.2]
print(softmax(scores))
# [0.8360188027814407, 0.11314284146556013, 0.05083835575299916]