pymc.Approximation#

class pymc.Approximation(groups, model=None)[source]#

Wrapper for grouped approximations

Wraps list of groups, creates an Approximation instance that collects sampled variables from all the groups, also collects logQ needed for explicit Variational Inference.

Parameters
groups: list[Group]

List of Group instances. They should have all model variables

model: Model

See also

Group

Notes

Some shortcuts for single group approximations are available:

Single group accepts local_rv keyword with dict mapping PyMC variables to their local Group parameters dict

Methods

Approximation.__init__(groups[, model])

Approximation.collect(item)

Approximation.get_optimization_replacements(s, d)

Dev - optimizations for logP.

Approximation.make_size_and_deterministic_replacements(s, d)

Dev - creates correct replacements for initial depending on sample size and deterministic flag

Approximation.rslice(name)

Dev - vectorized sampling for named random variable without call to aesara.scan.

Approximation.sample([draws, random_seed, ...])

Draw samples from variational posterior.

Approximation.sample_node(node[, size, ...])

Samples given node or nodes over shared posterior

Approximation.set_size_and_deterministic(...)

Dev - after node is sampled via symbolic_sample_over_posterior() or symbolic_single_sample() new random generator can be allocated and applied to node

Approximation.symbolic_sample_over_posterior(node)

Dev - performs sampling of node applying independent samples from posterior each time.

Approximation.symbolic_single_sample(node[, ...])

Dev - performs sampling of node applying single sample from posterior.

Approximation.to_flat_input(node[, ...])

Dev - replace vars with flattened view stored in self.inputs

Attributes

all_histograms

any_histograms

datalogp

Dev - computes \(E_{q}(data term)\) from model via aesara.scan that can be optimized later

datalogp_norm

Dev - normalized \(E_{q}(data term)\)

ddim

has_logq

inputs

joint_histogram

logp

Dev - computes \(E_{q}(logP)\) from model via aesara.scan that can be optimized later

logp_norm

Dev - normalized \(E_{q}(logP)\)

logq

Dev - collects logQ for all groups

logq_norm

Dev - collects logQ for all groups and normalizes it

ndim

params

replacements

Dev - all replacements from groups to replace PyMC random variables with approximation

sample_dict_fn

scale_cost_to_minibatch

Dev - Property to control scaling cost to minibatch

single_symbolic_datalogp

Dev - for single MC sample estimate of \(E_{q}(data term)\) aesara.scan is not needed and code can be optimized

single_symbolic_logp

Dev - for single MC sample estimate of \(E_{q}(logP)\) aesara.scan is not needed and code can be optimized

single_symbolic_varlogp

Dev - for single MC sample estimate of \(E_{q}(prior term)\) aesara.scan is not needed and code can be optimized

sized_symbolic_datalogp

Dev - computes sampled data term from model via aesara.scan

sized_symbolic_logp

Dev - computes sampled logP from model via aesara.scan

sized_symbolic_varlogp

Dev - computes sampled prior term from model via aesara.scan

symbolic_logq

Dev - collects symbolic_logq for all groups

symbolic_normalizing_constant

Dev - normalizing constant for self.logq, scales it to minibatch_size instead of total_size.

symbolic_random

symbolic_randoms

varlogp

Dev - computes \(E_{q}(prior term)\) from model via aesara.scan that can be optimized later

varlogp_norm

Dev - normalized \(E_{q}(prior term)\)