PyMC3中变量如何分配至当前活跃模型?
PyMC3中的变量如何分配至当前活跃模型?
在PyMC3里,要把变量分配到指定的活跃模型,最常用也最规范的方式是使用上下文管理器(with语句),直接看示例就懂了:
basic_model = pm.Model() with basic_model: # 未知模型参数的先验分布 alpha = pm.Normal('alpha', mu=0, sd=10) beta = pm.Normal('beta', mu=0, sd=10, shape=2) sigma = pm.HalfNormal('sigma', sd=1) # 结果的期望值 mu = alpha + beta[0]*X1 + beta[1]*X2 # 观测值的似然(抽样分布) Y_obs = pm.Normal('Y_obs', mu=mu, sd=sigma, observed=Y)
当你用with basic_model:包裹代码块时,这个代码块内所有通过PyMC3创建的变量(比如上面的pm.Normal、pm.HalfNormal)都会自动被分配到basic_model这个实例中,成为该模型的组成部分。这种方式能清晰划分模型边界,避免变量被误分配到其他模型或者全局上下文里。
内容的提问来源于stack exchange,提问作者redacted
相关产品推荐
相关产品推荐

