meridian.model.posterior_sampler.PosteriorMCMCSampler

使用 MCMC 从后验分布中进行抽样的可调用项。

方法

__call__

查看源代码

对后验分布运行马尔可夫链蒙特卡洛 (MCMC) 抽样。

如需详细了解这些实参,请参阅 windowed_adaptive_nuts

实参
n_chains MCMC 链的数量。如果给定一个整数序列,将为每个元素调用一次 windowed_adaptive_nuts。每次 windowed_adaptive_nuts 调用的 n_chains 实参等于相应的整数元素。通过使用整数列表,可以将 windowed_adaptive_nuts 调用的链拆分为多个调用,从而减少每个调用的链数。这样可以减少内存用量。由于每次抽样调用都会在更少的链上进行优化,因此可能需要更多的自适应步骤才能收敛。
n_adapt 每条链的自适应抽样次数。
n_burnin 每条链的预选抽样次数。预选抽样发生在自适应抽样和保留抽样之间。
n_keep 每条链保留的抽样次数(整数),抽取的样本将用于推理。
current_state 可选的张量结构,用于初始化抽样。使用与 model.experimental_pin(**pins).sample(n_chains) 相同的形状和结构。
init_step_size 可选整数,用于确定在哪里初始化蛙跳积分器的步长。结构必须使用 current_state 进行广播。例如,如果初始状态为 { 'a': tf.zeros(n_chains), 'b': tf.zeros([n_chains, n_features]), },则 1.{'a': 1., 'b': 1.}{'a': tf.ones(n_chains), 'b': tf.ones([n_chains, n_features])} 中的任何一个均可。默认为对数密度维度的 ¼ 次方。
dual_averaging_kwargs 可选的字典关键字实参,要传递给 tfp.mcmc.DualAveragingStepSizeAdaptation。默认情况下,将 target_accept_prob 设置为 0.85,并使用调和平均数减小各链的接受概率,否则,使用类默认值。
max_tree_depth NUTS 以隐式方式构建的树的最大深度。最大蛙跳步数受 2**max_tree_depth 的限制,例如,节点深度为 max_tree_depth 的二叉树的节点数。默认设置为 10,这时的蛙跳步数最多为 1,024 步。
max_energy_diff 每次蛙跳时能量差的标量阈值,超出该阈值的蛙跳步称为发散样本。默认值为 1000
unrolled_leapfrog_steps 每个树扩展步骤要展开的蛙跳数。对 max_tree_depth 所隐含的最大轨迹长度应用直接线性乘数。默认值为 1
parallel_iterations 允许并行运行的迭代次数。必须是正整数。如需了解详情,请参阅 tf.while_loop
seed 用于设置种子,以获得可重现的结果。如需了解详情,请参阅 PRNG 和种子
**pins 这些用于调节所提供的联合分布,并直接传递给 joint_dist.experimental_pin(**pins)

返回结果
仅包含后验样本的 Arviz InferenceData 对象。

可能抛出的错误
MCMCOOMError 如果模型内存不足,则可能会出现此错误。可以试着减小 n_keep 或以 n_chains 的形式传递整数列表,以便对链进行串行抽样。如需了解详情,请参阅运行 Meridian.sample_posterior 时发生 ResourceExhaustedError