-
Tensorflow 손실 함수 종류(Loss function, tf.keras.losses)카테고리 없음 2022. 10. 31. 10:11반응형
1. 목차
2. 활용법
2.1 model compile에서 손실함수 설정
model.compile에서는 loss 파라미터에 손실함수를 지정할때 사용 가능하다.
2.1.1 Name으로 설정하기
각 손실함수는 name이라는 파라미터를 가지고 있다.
default값으로 각각 name이 지정되어 있으며 이를 통해서 해당 함수를 사용 가능하다.
단, name으로 사용할 경우 내부 파라미터를 지정할수 없다.(기본 파라미터로 사용된다.)
model.compile(loss = 'sparse_categorical_crossentropy', optimizer = tf.keras.optimizers.SGD(learning_rate=0.01), metrics = ['accuracy'])
2.1.2 Class 이름으로 설정하기
Class이름을 통해서 손실함수를 사용 가능하다.
이 경우에는 내부 파라미터를 지정할 수 있다.
아래 예시에서는 from_logits를 True로 설정하였다.(default값은 False이다.)
model.compile(loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), optimizer = tf.keras.optimizers.SGD(learning_rate=0.01), metrics = ['accuracy'])
3. CrossEntropy류
from_logit=True : 기존에는 0~1 범위의 값만 받아야하지만 범위제한을 해제
3.1 binary_crossentropy
tf.keras.losses.BinaryCrossentropy( from_logits=False, label_smoothing=0.0, axis=-1, reduction=losses_utils.ReductionV2.AUTO, name='binary_crossentropy' )
y_true = [0, 1, 0, 0] y_pred = [-18.6, 0.51, 2.94, -12.8] loss = tf.keras.losses.BinaryCrossentropy(from_logits=True) loss(y_true, y_pred).numpy() #=> 0.865
3.2 CategoricalCrossentropy
tf.keras.losses.CategoricalCrossentropy( from_logits=False, label_smoothing=0.0, axis=-1, reduction=losses_utils.ReductionV2.AUTO, name='categorical_crossentropy' )
y_true = [[0, 1, 0], [0, 0, 1]] y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]] # Using 'auto'/'sum_over_batch_size' reduction type. cce = tf.keras.losses.CategoricalCrossentropy() cce(y_true, y_pred).numpy() #=> 1.177
3.2 SparseCategoricalCrossentropy
tf.keras.losses.SparseCategoricalCrossentropy( from_logits=False, ignore_class=None, reduction=losses_utils.ReductionV2.AUTO, name='sparse_categorical_crossentropy' )
y_true = [1, 2] y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]] # Using 'auto'/'sum_over_batch_size' reduction type. scce = tf.keras.losses.SparseCategoricalCrossentropy() scce(y_true, y_pred).numpy() #=> 1.177
반응형