keras 손실함수 중에 아래 두 개가 비슷하지만 사용할 때는 완전히 다르다.
주의가 필요하다.
+ categorical_crossentropy ; 다중 분류 손실함수. one-hot encoding 클래스
출력값이 one-hot encoding 된 결과로 나오고 실측 결과와의 비교시에도 실측 결과는 one-hot encoding 형태로 구성된다.
예를 들면 출력 실측값이 아래와 같은 형태(one-hot encoding)로 만들어 줘야 하는 과정을 거쳐야 한다.
[[0 0 1]
[0 1 0]
[1 0 0]] (배치 사이즈 3개인 경우)
네트웍 레이어 구성시 마지막에 Dense(3, activation='softmax') 로 3개의 클래스 각각 별로 positive 확률값이 나오게 된다.
[0.2, 0.3, 0.5]
위 네트웍 출력값과 실측값의 오차값을 계산한다.
model.compile(optimizer=.., loss='categorical_entropy')
+ sparse_categorical_crossentropy ; 다중 분류 손실함수. 위와 동일하지만 , integer type 클래스라는 것이 다르다.
예를 들면 출력 실측값이 아래와 같은 형태로 one-hot encoding 과정을 하지 않아도 된다.
[0, 1, 2] (배치 사이즈 3개로 했을 때)
네트웍 구성은 동일하게 Dense(3, activation='softmax')로 하고 출력값도 3개가 나오게 된다.
단 실측 출력값을 입력하는 부분에서 별도로 one-hot encoding을 할 필요가 없이 정수값 그대로 주고, 손실함수를 sparse_categorical_crossentropy 로 바꿔주기만 하면 된다.
model.compile(optimizer=.., loss='sparse_categorical_entropy')
'AI(DeepLearning)' 카테고리의 다른 글
타이타닉 kaggle 자료 분석 (0) | 2019.08.23 |
---|---|
Jupyter Lab/ TensorBoard 원격접속/방화벽 (1) | 2019.08.09 |
워드벡터를 사용하여 기사분류하기1 (0) | 2019.04.15 |
나무위키 데이터베이스 워드벡터(word2vec) 만들기 (2) | 2019.04.12 |
SVM 간단 예제 (0) | 2018.09.04 |