더북(TheBook)

생성자와 판별자의 손실 함수로 (이진) 크로스 엔트로피(BinaryCrossentropy)를 사용합니다.

코드 13-20 손실 함수 정의

loss_function = tf.keras.losses.BinaryCrossentropy(from_logits=True) ------ ①

def D_loss(real_output, fake_output): ------ 판별자에 대한 오차(loss) 정의
    real_loss = loss_function(tf.ones_like(real_output), real_output) ------ ②
    fake_loss = loss_function(tf.zeros_like(fake_output), fake_output) ------ ③
    final_loss = real_loss + fake_loss
    return final_loss

def G_loss(fake_output): ------ 생성자에 대한 오차(loss) 정의
    return loss_function(tf.ones_like(fake_output), fake_output)

① 이진 분류 문제이면서 모델이 확률 값을 출력하므로 BinaryCrossentropy를 사용합니다.

또한, tf.keras.losses.BinaryCrossentropy 혹은 binary_cross_entropyfrom_logits라는 파라미터를 받습니다. 이것이 True로 설정되면 logits를 직접 사용합니다. logits를 사용하는 이유는 손실 값이 정규화되지 않았음을 의미하며, 주로 소프트맥스 활성화 함수를 사용하지 않을 때 씁니다.

tf.ones_like: 모든 원소 값이 1인 텐서를 생성합니다.

tf.zeros_like: 모든 원소 값이 0인 텐서를 생성합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.