# pymc.FullRank#

class pymc.FullRank(*args, **kwargs)[source]#

Single Group Full Rank Approximation

Full Rank approximation to the posterior where Multivariate Gaussian family is fitted to minimize KL divergence from True posterior. In contrast to MeanField approach correlations between variables are taken in account. The main drawback of the method is computational cost.

Methods

 FullRank.__init__(*args, **kwargs) 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. FullRank.sample([draws, random_seed, ...]) Draw samples from variational posterior. FullRank.sample_node(node[, size, ...]) Samples given node or nodes over shared posterior FullRank.set_size_and_deterministic(node, s, d) 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. FullRank.symbolic_single_sample(node[, ...]) Dev - performs sampling of node applying single sample from posterior. FullRank.to_flat_input(node[, more_replacements]) 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)$$