Posted at

ソフトマックス関数実装したヅラ

More than 1 year has passed since last update.


ソフトマックス関数とは

分類問題等でよく使われる活性化関数

なぜなら、正解ラベルへの推論を確率で割り振ってくれるため。

例)

mnistで手書きの8に対してのソフトマックス

[0.05, 0.01, 0.04, 0.1, 0.02, 0.05, 0.2, 0.03, 0.4, 0.1]

左の要素から数字の0,1,2,....9の予測確率に対応(4割の確率で8だと予測している)

すべての要素を足すと1になる。


実装


softmax.py

# coding: UTF-8

import numpy as np

# ソフトマックス関数
def softmax(a):
# 一番大きい値を取得
c = np.max(a)
# 各要素から一番大きな値を引く(オーバーフロー対策)
exp_a = np.exp(a - c)
sum_exp_a = np.sum(exp_a)
# 要素の値/全体の要素の合計
y = exp_a / sum_exp_a

return y

a = [23.0, 0.94, 5.46]
print (softmax(a))
# [ 9.99999976e-01 2.62702205e-10 2.41254141e-08]


参考文献

ゼロから作るDeep Learning