Source code for gpytorch.likelihoods.poisson_likelihood

from __future__ import annotations

from typing import Any

import torch
from torch import Tensor
from torch.distributions import Poisson

from ..distributions import base_distributions
from .likelihood import _OneDimensionalLikelihood


[docs]class PoissonLikelihood(_OneDimensionalLikelihood): r""" A Poisson likelihood for regressing over count data. The Poisson distribution is parameterized by :math:`\lambda > 0` (rate parameter), which represents the expected number of events occurring in a fixed interval. The rate parameter is derived from the GP function samples through a softplus transformation: .. math:: \begin{equation*} \lambda = \text{softplus}(f) \end{equation*} where :math:`f` is the GP function sample. The likelihood is then: .. math:: p(y \mid f) = \text{Poisson}(\lambda) This likelihood does not have learnable parameters and enforces nonnegativity through the softplus activation function. :ivar torch.Tensor rate: :math:`\lambda` parameter (rate) """ def __init__(self): super().__init__() def forward(self, function_samples: Tensor, *args: Any, **kwargs: Any) -> Poisson: rates = torch.nn.functional.softplus(function_samples) return base_distributions.Poisson(rates)