# 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

Notes

Some shortcuts for single group approximations are available:

Methods

 Approximation.__init__(groups[, model]) Dev - optimizations for logP. Dev - creates correct replacements for initial depending on sample size and deterministic flag Dev - vectorized sampling for named random variable without call to pytensor.scan. Approximation.sample([draws, random_seed, ...]) Draw samples from variational posterior. Approximation.sample_node(node[, size, ...]) Samples given node or nodes over shared posterior Dev - after node is sampled via symbolic_sample_over_posterior() or symbolic_single_sample() new random generator can be allocated and applied to 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 pytensor.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 pytensor.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)$$ pytensor.scan is not needed and code can be optimized single_symbolic_logp Dev - for single MC sample estimate of $$E_{q}(logP)$$ pytensor.scan is not needed and code can be optimized single_symbolic_varlogp Dev - for single MC sample estimate of $$E_{q}(prior term)$$ pytensor.scan is not needed and code can be optimized sized_symbolic_datalogp Dev - computes sampled data term from model via pytensor.scan sized_symbolic_logp Dev - computes sampled logP from model via pytensor.scan sized_symbolic_varlogp Dev - computes sampled prior term from model via pytensor.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 pytensor.scan that can be optimized later varlogp_norm Dev - normalized $$E_{q}(prior term)$$