pythonを使用してsoftmax関数を計算する


softmax関数は確率計算における確率結果が絶対的に優位を占める問題を解決するために用いられる.例えば、関数計算結果には2つの値aとbがあり、a>bであれば、サイズで値をとると、aは永遠に選択され、bは永遠に選択されない.しかし実際には,小確率イベントも選択されることがあるが,可能性は比較的小さいだけであり,softmax関数はこの問題を解決した.
import numpy as np
import math

#       softmax   
def softmax(inmatrix):
    m, n = np.shape(inmatrix)
    outmatrix = np.mat(np.zeros((m, n)))
    soft_sum = 0

    for idx in range(n):
        outmatrix[0, idx] = math.exp(inmatrix[0, idx])
        soft_sum += outmatrix[0, idx]

    for idx in range(n):
        outmatrix[0, idx] = outmatrix[0, idx] / soft_sum

    return outmatrix

a = np.array([[1, 2, 1, 2, 1, 1, 3]])
softmax(a)