Deep learning 改进GAN的损耗实现

Deep learning 改进GAN的损耗实现,deep-learning,loss-function,Deep Learning,Loss Function,最近,我在读一篇论文《改进训练技术》,作者将损失定义如下: 然后我检查了物品的代码,相应的损失定义代码是: 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_

最近,我在读一篇论文《改进训练技术》,作者将损失定义如下: 然后我检查了物品的代码,相应的损失定义代码是:

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))
告诉我们的。
提前感谢。

您应该阅读这篇文章的片段。

Loss_unlabel对应于L_{unsupervised}

见下文。

然后,通过函数nn.softplus和nn.logsum_exp的代码,您将得到loss_unl


希望对您有所帮助。

您能解释一下为什么代码中应该有损失实验室吗?@张千辉?@Schaffer,如果你不懂这个原始代码,你可以看到这个代码。。半gan的实现方法很多。希望能帮助你。