def set_loss(self, loss_type, loss_weight=1, loss_after_nonlin=False, **kwargs): """ loss_type is the name of the loss. """ self.loss = ls.get_loss_from_type_name(loss_type, **kwargs) self.loss.set_weight(loss_weight) self.layers[-1].set_loss(self.loss, loss_after_nonlin=loss_after_nonlin)
def eval_ae_on_kmeans_reconstruction_loss(x, in_shape, ae_kmnn, loss_name, **kwargs): loss = ls.get_loss_from_type_name(loss_name) loss.load_target(x) z = ae_kmnn.encode(x, in_shape) x_rec = ae_kmnn.decode(z, in_shape) l, _ = loss.compute_loss_and_grad(x_rec) l /= x.shape[0] return l
def eval_kmeans_reconstruction_loss(x, in_shape, kmnn, loss_name, **kwargs): loss = ls.get_loss_from_type_name(loss_name) loss.load_target(x) r, out_shape = kmnn.forward_prop(x, in_shape) x_rec = kmnn.recover_input(r, in_shape, **kwargs) l, _ = loss.compute_loss_and_grad(x_rec) l /= x.shape[0] return l