beanmachine.ppl.model package
Submodules
Module contents
- class beanmachine.ppl.model.RVIdentifier(wrapper: Callable, arguments: Tuple)
Bases:
object
Struct representing the unique key corresponding to a BM random variable.
- arguments: Tuple
- property function
- property is_functional
- property is_random_variable
- wrapper: Callable
- class beanmachine.ppl.model.StatisticalModel
Bases:
object
Parent class to all statistical models implemented in Bean Machine.
Every random variable in the model needs to be defined with function declaration wrapped the
bm.random_variable
.Every deterministic functional that a user would like to query during inference should be wrapped in a
bm.functional
.Every parameter of the guide distribution that is to be learned via variational inference should be wrapped in a
bm.param
.- static functional(f: Callable[[beanmachine.ppl.model.statistical_model.P], torch.Tensor]) Callable[[beanmachine.ppl.model.statistical_model.P], Union[beanmachine.ppl.model.rv_identifier.RVIdentifier, torch.Tensor]]
Decorator to be used for every query defined in statistical model, which are functions of
bm.random_variable
@bm.random_variable def foo(): return Normal(0., 1.) @bm.functional(): def bar(): return foo() * 2.0
- static get_func_key(wrapper, arguments) beanmachine.ppl.model.rv_identifier.RVIdentifier
Creates a key to uniquely identify the Random Variable.
- Parameters
wrapper – reference to the wrapper function
arguments – function arguments
- Returns
Tuple of function and arguments which is to be used to identify a particular function call.
- static param(init_fn)
Decorator to be used for params (variable to be optimized with VI).:
@bm.param def mu(): return torch.zeros(2) @bm.random_variable def foo(): return Normal(mu(), 1.)
- static random_variable(f: Callable[[beanmachine.ppl.model.statistical_model.P], torch.distributions.distribution.Distribution]) Callable[[beanmachine.ppl.model.statistical_model.P], Union[beanmachine.ppl.model.rv_identifier.RVIdentifier, torch.Tensor]]
Decorator to be used for every stochastic random variable defined in all statistical models. E.g.:
@bm.random_variable def foo(): return Normal(0., 1.) def foo(): return Normal(0., 1.) foo = bm.random_variable(foo)
- beanmachine.ppl.model.functional(f: Callable[[beanmachine.ppl.model.statistical_model.P], torch.Tensor]) Callable[[beanmachine.ppl.model.statistical_model.P], Union[beanmachine.ppl.model.rv_identifier.RVIdentifier, torch.Tensor]]
Decorator to be used for every query defined in statistical model, which are functions of
bm.random_variable
@bm.random_variable def foo(): return Normal(0., 1.) @bm.functional(): def bar(): return foo() * 2.0
- beanmachine.ppl.model.get_beanmachine_logger(console_level: beanmachine.ppl.model.utils.LogLevel = LogLevel.WARNING, file_level: beanmachine.ppl.model.utils.LogLevel = LogLevel.INFO) logging.Logger
- beanmachine.ppl.model.param(init_fn)
Decorator to be used for params (variable to be optimized with VI).:
@bm.param def mu(): return torch.zeros(2) @bm.random_variable def foo(): return Normal(mu(), 1.)
- beanmachine.ppl.model.random_variable(f: Callable[[beanmachine.ppl.model.statistical_model.P], torch.distributions.distribution.Distribution]) Callable[[beanmachine.ppl.model.statistical_model.P], Union[beanmachine.ppl.model.rv_identifier.RVIdentifier, torch.Tensor]]
Decorator to be used for every stochastic random variable defined in all statistical models. E.g.:
@bm.random_variable def foo(): return Normal(0., 1.) def foo(): return Normal(0., 1.) foo = bm.random_variable(foo)