기존의 함수는 0과 1를 구별하는 binary classification 일때 유용하게 쓰였다.
하지만 두개 이상의 classification을 할때 활용되는 함수가 바로 softmax이다.
위의 수식을 간단하게 요약해서 말하자면 "자신" 을 전체로 나눈것. 즉 확률이다.
따라서, 0< P <1 의 값이며 모
#활성화 항수(softmax함수)
import numpy as np
import matplotlib.pyplot as plt
#C를 활요해준 이유는 값의 overflow를 막기 위함(c=최대값)
#1차원 일때 softmax함수
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
#2차원 일때 softmax함수
def softmax(x):
if x.ndim ==2:
x = x - x.max(axis=1,keepdims =True)
x = np.exp(x)
x /= x.sum(axis = 1,keepdims =True)
elif x.ndim == 1:
x = x-np.max(x)
x = np.exp(x) / np.sum(np.exp(x))
return x
든 x에 대한 y의 합을 1이다.
'Data Science > 머신러닝&딥러닝 기초 이론' 카테고리의 다른 글
[딥러닝 실습] Loss function (0) | 2020.04.24 |
---|---|
[딥러닝 실습] MNIST 손글씨 인식 실습하기 (0) | 2020.04.18 |
[딥러닝 실습] 활성화 함수 연습(step, sigmoid ,relu function) (0) | 2020.04.14 |
[ML lab 02] ML lab 02 - TensorFlow로 간단한 linear regression을 구현 (0) | 2020.03.28 |
ML lab 01 - tensorflow의 설치 및 기본적인 operation (0) | 2020.03.27 |
댓글