카테고리 없음
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반응형