Links#
We provide link functions as a convenience to abstract away a bit more Numpyro boilerplate. Link functions take model predictions as inputs to a distribution.
The simplest example is the Gaussian link
mu = ...
sigma ~ Exp(1)
y ~ Normal(mu, sigma)
We currently provide
negative_binomial_link
logit_link
poission_link
gaussian_link_exp
lognormal_link_exp
Link functions include trainable scale parameters when needed, as in the case
of Gaussians. We also provide classes for eaisly making additional links via
the LocScaleLink
and SingleParamLink
classes.
For instance, the Poisson link is created like this:
poission_link = SingleParamLink(obs_dist=dists.Poisson)
And implements
rate = ...
y ~ Poisson(rate)
In a Numpyro model, you use a link like
from blayers.layers import AdaptiveLayer
from blayers.links import poisson_link
def model(x, y):
rate = AdaptiveLayer()('rate', x)
return poisson_link(rate, y)
- class blayers.links.Link(*args)[source]#
Bases:
ABC
- Parameters:
args (Any)
- class blayers.links.LocScaleLink(sigma_dist=<class 'numpyro.distributions.continuous.Exponential'>, sigma_kwargs={'rate': 1.0}, obs_dist=<class 'numpyro.distributions.continuous.Normal'>, obs_kwargs={}, dependent_outputs=False)[source]#
Bases:
Link
- Parameters:
sigma_dist (Distribution)
sigma_kwargs (dict[str, float])
obs_dist (Distribution)
obs_kwargs (dict[str, float])
dependent_outputs (bool)
- __init__(sigma_dist=<class 'numpyro.distributions.continuous.Exponential'>, sigma_kwargs={'rate': 1.0}, obs_dist=<class 'numpyro.distributions.continuous.Normal'>, obs_kwargs={}, dependent_outputs=False)[source]#
Initialize link parameters.
- Parameters:
sigma_dist (Distribution)
sigma_kwargs (dict[str, float])
obs_dist (Distribution)
obs_kwargs (dict[str, float])
dependent_outputs (bool)
- Return type:
None
- class blayers.links.SingleParamLink(obs_dist=<function Bernoulli>, dependent_outputs=False)[source]#
Bases:
Link
- Parameters:
obs_dist (Distribution)
dependent_outputs (bool)
- blayers.links.negative_binomial_link(y_hat, y=None, dependent_outputs=False, rate=1.0)[source]#
- Parameters:
y_hat (Array)
y (Array | None)
dependent_outputs (bool)
rate (float)
- Return type:
Array
- blayers.links.logit_link#
Logit link function.
- Parameters:
y_hat (Array)
y (Array | None)
- Return type:
Array
- blayers.links.poission_link#
Poisson link function.
- Parameters:
y_hat (Array)
y (Array | None)
- Return type:
Array
- blayers.links.gaussian_link_exp#
Gaussian link function with exponentially distributed sigma.
- Parameters:
y_hat (Array)
y (Array | None)
- Return type:
Array
- blayers.links.lognormal_link_exp#
Lognormal link function with exponentially distributed sigma.
- Parameters:
y_hat (Array)
y (Array | None)
- Return type:
Array