Closed taki0112 closed 7 years ago
loss_D = tf.reduce_mean(tf.log(D_real) + tf.log(1 - D_gene)) loss_G = tf.reduce_mean(tf.log(D_gene))
위 코드와 관련된 주석을 보면, 논문에서 loss_G와 loss_D를 최대화하는것이 GAN모델을 최적화하는것이다 라고 설명해주셨습니다.
따라서 이후 코드에서보면
train_D = tf.train.AdamOptimizer(learning_rate).minimize(-loss_D, var_list=D_var_list) train_G = tf.train.AdamOptimizer(learning_rate).minimize(-loss_G, var_list=G_var_list)
에서 -를 붙여서, minimize해주셨습니다.
제가 위 코드를 실행하면서 loss_G와 loss_D에 대해서 tensorboard로 확인했습니다.
추가한 코드는 다음과 같습니다.
loss_D = tf.reduce_mean(tf.log(D_real) + tf.log(1 - D_gene)) tf.summary.scalar('loss_D', -loss_D) loss_G = tf.reduce_mean(tf.log(D_gene)) tf.summary.scalar('loss_G', -loss_G)
근데, loss_D는 값이 증가하는 경향을 보이고, loss_G는 값이 감소하는 경향을 보이고있습니다. 뭔가 좀 이상하지 않나요 ?
epoch를 1000까지 해봐서 지금 확인중입니다만.. loss_G는 감소하다가 나중에 증가하고있긴합니다. 근데 계속해서 증가하는경향을 보여야 하는거 아닌가요?
그래야 주석과 맞는 설명이 되는게 아니지 싶습니다. 제가 어떤부분을 잘못 이해하고있는걸까요?
답변부탁드립니다.
감사합니다.
loss_D와 loss_G를 각자 최대화 시키더라도, loss_D와 loss_G는 서로 연관관계가 있기 때문에 두 개의 손실값이 항상 같이 증가하는 경향을 보이지는 않을 것 입니다.
loss_D가 증가하려면 loss_G는 하락해야하고, loss_G가 증가하려면 loss_D는 하락해야하는 경쟁관계에 있기 때문입니다.
위 코드와 관련된 주석을 보면, 논문에서 loss_G와 loss_D를 최대화하는것이 GAN모델을 최적화하는것이다 라고 설명해주셨습니다.
따라서 이후 코드에서보면
에서 -를 붙여서, minimize해주셨습니다.
제가 위 코드를 실행하면서 loss_G와 loss_D에 대해서 tensorboard로 확인했습니다.
추가한 코드는 다음과 같습니다.
근데, loss_D는 값이 증가하는 경향을 보이고, loss_G는 값이 감소하는 경향을 보이고있습니다. 뭔가 좀 이상하지 않나요 ?
epoch를 1000까지 해봐서 지금 확인중입니다만.. loss_G는 감소하다가 나중에 증가하고있긴합니다. 근데 계속해서 증가하는경향을 보여야 하는거 아닌가요?
그래야 주석과 맞는 설명이 되는게 아니지 싶습니다. 제가 어떤부분을 잘못 이해하고있는걸까요?
답변부탁드립니다.
감사합니다.