def _vae_loss(self, x, x_decoded_mean):
n_inputs = self._model.get_input_shape_at(0)[1]
z_mean = self._model.get_layer('z_mean').inbound_nodes[0].output_tensors[0]
z_log_var = self._model.get_layer('z_log_var').inbound_nodes[0].output_tensors[0]
xent_loss = n_inputs * objectives.binary_crossentropy(x, x_decoded_mean)
kl_loss = - 0.5 * K.sum(1 + z_log_var
- K.square(z_mean)
- K.exp(z_log_var), axis=-1)
return xent_loss + kl_loss
评论列表
文章目录