ab.losses

Network loss functions.

aboleth.losses.elbo(Net, Y, N, KL, likelihood, like_weights=None)

Build the evidence lower bound loss for a neural net.

Parameters:
  • Net (ndarray, Tensor) – the neural net featues of shape (n_samples, N, tasks).
  • Y (ndarray, Tensor) – the targets of shape (N, tasks).
  • N (int, Tensor) – the total size of the dataset (i.e. number of observations).
  • likelihood (Tensor) – the likelihood model to use on the output of the last layer of the neural net, see the ab.likelihoods module.
  • like_weights (callable, ndarray, Tensor) – weights to apply to each observation in the expected log likelihood. This should be an array of shape (N, 1) or can be called as like_weights(Y) and should return a (N, 1) array.
Returns:

nelbo – the loss function of the Bayesian neural net (negative ELBO).

Return type:

Tensor

aboleth.losses.max_posterior(Net, Y, regulariser, likelihood, like_weights=None, first_axis_is_obs=True)

Build maximum a-posteriori (MAP) loss for a neural net.

Parameters:
  • Net (ndarray, Tensor) – the neural net featues of shape (N, tasks) or (n_samples, N, tasks).
  • Y (ndarray, Tensor) – the targets of shape (N, tasks).
  • likelihood (Tensor) – the likelihood model to use on the output of the last layer of the neural net, see the ab.likelihoods module.
  • like_weights (callable, ndarray, Tensor) – weights to apply to each observation in the expected log likelihood. This should be an array of shape (N, 1) or can be called as like_weights(Y) and should return a (N, 1) array.
  • first_axis_is_obs (bool) – indicates if the first axis indexes the observations/data or not. This will be True if Net is of shape (N, tasks) or False if Net is of shape (n_samples, N, tasks).
Returns:

map – the loss function of the MAP neural net.

Return type:

Tensor