Реализация потерь в Improved-GAN

Недавно я читаю статью Улучшенные методы обучения GAN, автор определяет потерю следующим образом: введите описание изображения здесь Затем я проверяю код статьи, соответствующий код определения потерь:

output_before_softmax_lab = ll.get_output(disc_layers[-1], x_lab, deterministic=False)
output_before_softmax_unl = ll.get_output(disc_layers[-1], x_unl, deterministic=False)
output_before_softmax_gen = ll.get_output(disc_layers[-1], gen_dat, deterministic=False)

l_lab = output_before_softmax_lab[T.arange(args.batch_size),labels]
l_unl = nn.log_sum_exp(output_before_softmax_unl)
l_gen = nn.log_sum_exp(output_before_softmax_gen)
loss_lab = -T.mean(l_lab) + 
T.mean(T.mean(nn.log_sum_exp(output_before_softmax_lab)))
loss_unl = -0.5*T.mean(l_unl) + 0.5*T.mean(T.nnet.softplus(l_unl)) + 0.5*T.mean(T.nnet.softplus(l_gen))    

Я понимаю, что l_lab - это потеря классификации для помеченных данных, поэтому ее следует минимизировать, а l_unl - это потеря для немаркированных данных и l_gen потеря на сгенерированных изображениях. Я не понимаю, почему дискриминатор должен минимизировать l_unl и l_gen, о чем нам сообщает код 0.5*T.mean(T.nnet.softplus(l_unl)) + 0.5*T.mean(T.nnet.softplus(l_gen)). Заранее спасибо.


person Schaffer    schedule 17.10.2017    source источник


Ответы (1)


Вам следует прочитать этот фрагмент Improve-gan. введите здесь описание изображения

Loss_unlabel соответствует L_ {unsupervised}.

См. Ниже. введите здесь описание изображения

Затем по коду функции nn.softplus и nn.logsum_exp вы получите код loss_unl

Надеюсь помочь вам.

person zhangqianhui    schedule 20.11.2017
comment
Можете ли вы объяснить, почему в коде должно быть значение loss_lab? @ zhangqianhui? - person Schaffer; 23.11.2017
comment
@Schaffer, Если вы не понимаете этот исходный код, вы можете увидеть этот код. github.com/gitlimlab/ SSGAN-Tensorflow. В орудиях полугана есть много приемов. Надеюсь помочь вам. - person zhangqianhui; 24.11.2017