ソフトマックス関数

2020/12/10

Python3.6.7, NumPy1.19.4

import numpy as np

def softmax(x):
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum()

scores = [3.0, 1.0, 0.2]
print(softmax(scores))
#[0.8360188  0.11314284 0.05083836]

一行の方法。結果は一緒。上の方が数値の安定性の観点から望ましいらしい。

def softmax(x):
    return np.exp(x) / np.sum(np.exp(x), axis=0)


PythonでSoftmax関数を実装する方法
https://www.it-swarm-ja.tech/ja/python/python%E3%81%A7softmax%E9%96%A2%E6%95%B0%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/822760858/


勉強のためpure pythonで実装したのはこちら
https://code.tiblab.net/python/calculate/softmax