pymc.Group#

class pymc.Group(group=None, vfam=None, params=None, *args, **kwargs)[源代码]#

用于在VI中分组变量的基类

分组近似用于为指定的一组变量建模相互依赖关系。局部和全局组的基础。

参数:
组: 列表

PyMC 变量列表或 None,表示该组接受所有剩余变量

vfam: str

标记对应于该组的变分族的字符串。不能与 params 同时传递。

参数: dict

带有变分族参数的字典,完整描述见下文。不能与 vfam 同时传递。

random_seed: int

底层随机生成器的随机种子

模型

PyMC 模型

选项: dict

组的特殊选项

**kwargs: 组的其它 kwargs

参见

近似

注释

组实例/类有一些重要的常量:

  • has_logq 表示分布是显式定义的

这些常量有助于为给定的参数化提供正确的推理方法。

参考文献

示例

基本初始化

Group 是一个工厂类。你不需要显式调用每个 ApproximationGroup。通过传递正确的 vfam (Variational FAMily) 参数,你将告诉该组所需的参数化是什么。这有助于避免代码中充斥大量类。

>>> group = Group([latent1, latent2], vfam='mean_field')

另一种选择近似的方法是提供一个包含一些预定义良好形状参数的 params 字典。字典的键作为变分族的标识符,并帮助自动选择正确的组类。要确定使用哪种近似,params 字典应包含所需参数的完整集合。由于有两种方式实例化 Group,同时传递 vfamparams 是被禁止的。部分参数化被设计为禁止,以避免边缘情况和可能的问题。

>>> group = Group([latent3], params=dict(mu=my_mu, rho=my_rho))

需要注意的是,如果你传递了自定义参数,它们将不会被优化器自动收集,你需要通过 more_obj_params 关键字提供它们。

支持的字典键:

  • {‘mu’, ‘rho’}: 均值场组

  • {‘mu’, ‘L_tril’}: FullRankGroup

  • {‘histogram’}: 经验组

延迟初始化

当你有很多潜在变量时,手动完成所有操作是不切实际的。为了使生活更简单,你可以传递 None 而不是变量列表。在这种情况下,你不会创建共享参数,直到你将所有收集的组传递给收集所有组并检查每个组是否正确初始化的近似对象。对于那些组等于 None 的组,它将收集所有其他组未覆盖的其余变量,并执行延迟初始化。

>>> group_1 = Group([latent1], vfam='fr')  # latent1 has full rank approximation
>>> group_other = Group(None, vfam='mf')  # other variables have mean field Q
>>> approx = Approximation([group_1, group_other])

总结

当你创建了所有组后,需要将所有组传递给 Approximation。它不接受任何其他参数,除了 groups

>>> approx = Approximation(my_groups)

方法

Group.__init__(group[, vfam, params, ...])

Group.get_param_spec_for(**kwargs)

Group.group_for_params(params)

Group.group_for_short_name(name)

Group.make_size_and_deterministic_replacements(s, d)

Dev - 根据样本大小和确定性标志创建正确的替换

Group.register(sbcls)

Group.set_size_and_deterministic(node, s, d)

Dev - 在通过 symbolic_sample_over_posterior()symbolic_single_sample() 对节点进行采样后,可以分配并应用新的随机生成器到节点

Group.symbolic_sample_over_posterior(node)

Dev - 每次从后验分布中独立采样,对节点进行采样。

Group.symbolic_single_sample(node)

Dev - 从后验分布中对节点应用单个样本进行采样。

Group.to_flat_input(node)

Dev - 用存储在 self.inputs 中的扁平视图替换变量

Group.var_to_data(shared)

将一个扁平的1维张量变量映射到一个基于 self.ordering 信息的 xarray 数据集。

属性

alias_names

cov

潜在变量之间的协方差作为一个无结构的二维张量变量

ddim

has_logq

initial_dist_map

initial_dist_name

input

logq

Dev - 组 logQ 的蒙特卡罗估计

logq_norm

开发 - 组 logQ 归一化的蒙特卡罗估计

mean

潜在变量的均值作为非结构化的1维张量变量

mean_data

潜在变量的均值作为 xarray 数据集

ndim

params

params_dict

replacements

shared_params

short_name

std

潜在变量的标准差作为非结构化的1维张量变量

std_data

潜在变量的标准差作为 xarray 数据集

symbolic_initial

symbolic_logq

Dev - 正确缩放 self.symbolic_logq_not_scaled

symbolic_logq_not_scaled

Dev - 对于 self.symbolic_random 计算,符号计算的 logq 可以更高效,因为所有内容包括 self.symbolic_random 都是预先已知的

symbolic_normalizing_constant

Dev - 用于 self.logq 的归一化常数,将其缩放到 minibatch_size 而不是 total_size

symbolic_random

Dev - 抽象节点,它接受 self.symbolic_initial 并创建以 self.params_dict 参数化的近似后验。