as_model#
- pymc_extras.as_model(*model_args, **model_kwargs)[source]#
装饰器为函数中声明的 PyMC 模型提供上下文。这消除了对上下文管理器进行思考的所有需求,并允许您将创建生成模型与使用模型分离开来。此外,函数中添加了一个 coords 参数,以便可以在函数调用期间更改坐标。
改编自 Rob Zinkov 的博客文章,并受到 PyMC3 的 sampled 装饰器的启发。
示例
import pymc as pm import pymc_extras as pmx # The following are equivalent # standard PyMC API with context manager with pm.Model(coords={"obs": ["a", "b"]}) as model: x = pm.Normal("x", 0., 1., dims="obs") pm.sample() # functional API using decorator @pmx.as_model(coords={"obs": ["a", "b"]}) def basic_model(): pm.Normal("x", 0., 1., dims="obs") m = basic_model() pm.sample(model=m) # alternative way to use functional API @pmx.as_model() def basic_model(): pm.Normal("x", 0., 1., dims="obs") m = basic_model(coords={"obs": ["a", "b"]}) pm.sample(model=m)