본문 바로가기

Deep Learning/Tensorflow

Tensorflow - 분류의 문제에서 loss 셋팅하는 방법

반응형
분류의 문제에서 loss 셋팅하는 방법

 

 

 

2개 분류의 문제일때는, 로스 펑션을 binary_crossentropy


3개 이상의 분류의 문제일때는

 

2가지 경우가 있다.


첫번째 경우, y의 값이 레이블 인코딩으로 되어있는 경우 : sparse_categorical_crossentropy 사용


두번째 경우, y의 값이 원 핫 인코딩으로 되어있는 경우 : categorical_crossentropy 사용

 

 

 

사용코드 예시

 

sparse_categorical_crossentropy

 

def build_model() :
  model = tf.keras.models.Sequential()
  model.add( tf.keras.layers.Flatten() )
  model.add( tf.keras.layers.Dense( 1024, 'relu'))
  model.add( tf.keras.layers.Dense( 10, 'softmax'))
  model.compile('adam', loss = 'sparse_categorical_crossentropy', metrics=['accuracy'])
  return model
model = build_model()
model.fit(training_images, training_labels, epochs=5)

 

model.evaluate(test_images, test_labels)

 

 

 

categorical_crossentropy

 

y의 값을 분류의 문제에서 원 핫 인코딩으로

 

to_categorical()을 사용하여 변경하였을 경우

 

 

# 컴파일하기 전 y_train을 확인 후 원 핫 인코딩이 되어 있다면
# loss=categorical_crossentropy로 설정 해야 한다.

model = tf.keras.models.Sequential()
model.add( tf.keras.layers.Dense( 512, 'relu', input_shape=(784,)))
model.add( tf.keras.layers.Dropout(0.2))
model.add( tf.keras.layers.Dense( 10, 'softmax'))
model.compile('adam', loss = 'categorical_crossentropy', metrics=['accuracy'])
반응형