본문 바로가기

딥러닝(Deep Learning)/컴퓨터 비전

categorical_crossentropy VS sparse_categorical_crossentropy

보통, 다중 클래스 분류 시 Loss Function으로 categorical_crossentropy를 사용한다. 

그러나 사실 다중 클래스 분류 시 [Sparse]_categorical_crossentropy를 Loss Function으로 사용하기도 한다. 

이 둘 중 어느 것을 사용하여도 사실 모델의 정확도에는 영향을 미치지 않는다. 

이 둘의 차이점은 무엇일까??

바로, Training Data의 Label의 형태이다. 

categorical_crossentropy : Training Data의 Label값이 [One-Hot Encoding]인 경우 사용

Sparse_categorical_crossentropy : Training Data의 Label 값이 [정수(int)]인 경우 사용

([컴퓨터 비전과 딥러닝 p 407의 PG9-4]에서 Sparse_categorical_crossentropy를 Loss Function으로 사용하고 있다)

 

Sparse_categorical_crossentropy의 장점

1. One-Hot Encoding : 분류 클래스의 개수가 1만개이면, 1만 개의 벡터 크기를 가지는 Label값을 가지게 된다. 

-> 메모리 소요가 심하다. 그러나 분류 클래스의 Label 값이 정수(int)형이라면 메모리 소모를 굉장히 줄일 수가 있다.