달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
반응형

 

 

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')

 



출처: https://crazyj.tistory.com/153 [크레이지J의 탐구생활]

 

반응형
Posted by 친절한 웬디양~ㅎㅎ
|