반응형
분류의 문제에서 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'])반응형
'Deep Learning > Tensorflow' 카테고리의 다른 글
| Tensorflow - overfitting & underfitting (0) | 2022.06.13 |
|---|---|
| Tensorflow - softmax로 나온 결과를, 레이블 인코딩으로 바꾸는 방법 (0) | 2022.06.13 |
| Tensorflow - activation function [ softmax ] (0) | 2022.06.13 |
| Tensorflow - Flatten Library (0) | 2022.06.13 |
| Tensorflow - EarlyStopping Library사용법 (0) | 2022.06.13 |