def create_objectives(self, deterministic=False):
# load network
l_g, l_d = self.network
# load ouput
g = lasagne.layers.get_output(l_g, deterministic=deterministic)
d_real = lasagne.layers.get_output(l_d, deterministic=deterministic)
d_fake = lasagne.layers.get_output(l_d, g, deterministic=deterministic)
# define loss
loss_g = lasagne.objectives.binary_crossentropy(d_fake, 1).mean()
loss_d = ( lasagne.objectives.binary_crossentropy(d_real, 1)
+ lasagne.objectives.binary_crossentropy(d_fake, 0) ).mean()
# compute and store discriminator probabilities
p_real = (d_real > 0.5).mean()
p_fake = (d_fake < 0.5).mean()
return loss_g, loss_d, p_real, p_fake
评论列表
文章目录