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 表示分布是显式定义的
这些常量有助于为给定的参数化提供正确的推理方法。
参考文献
Kingma, D. P., & Welling, M. (2014). Auto-Encoding Variational Bayes. stat, 1050, 1.
示例
基本初始化
Group
是一个工厂类。你不需要显式调用每个 ApproximationGroup。通过传递正确的 vfam (Variational FAMily) 参数,你将告诉该组所需的参数化是什么。这有助于避免代码中充斥大量类。>>> group = Group([latent1, latent2], vfam='mean_field')
另一种选择近似的方法是提供一个包含一些预定义良好形状参数的 params 字典。字典的键作为变分族的标识符,并帮助自动选择正确的组类。要确定使用哪种近似,params 字典应包含所需参数的完整集合。由于有两种方式实例化
Group
,同时传递 vfam 和 params 是被禁止的。部分参数化被设计为禁止,以避免边缘情况和可能的问题。>>> 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)Dev - 根据样本大小和确定性标志创建正确的替换
Group.register
(sbcls)Group.set_size_and_deterministic
(node, s, d)Dev - 在通过
symbolic_sample_over_posterior()
或symbolic_single_sample()
对节点进行采样后,可以分配并应用新的随机生成器到节点Dev - 每次从后验分布中独立采样,对节点进行采样。
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 参数化的近似后验。