据我了解,上下文管理器在Python中用于定义对象的代码段(__enter__和__exit__)的初始化和完成。
但是,在PyMC3的教程中,它们显示了以下上下文管理器示例:
basic_model = pm.Model()
with basic_model:
# Priors for unknown model parameters
alpha = pm.Normal('alpha', mu=0, sd=10)
beta = pm.Normal('beta', mu=0, sd=10, shape=2)
sigma = pm.HalfNormal('sigma', sd=1)
# Expected value of outcome
mu = alpha + beta[0]*X1 + beta[1]*X2
# Likelihood (sampling distribution) of observations
Y_obs = pm.Normal('Y_obs', mu=mu, sd=sigma, observed=Y)
并提到这有关联的变量的目的alpha,beta,sigma,mu和Y_obs对模型basic_model。
我想了解这种机制是如何工作的。在我发现的上下文管理器的说明 中,我没有看到任何暗示在上下文块中定义的变量或对象如何以某种方式“关联”到上下文管理器的建议。似乎库(PyMC3)以某种方式可以访问“当前”上下文管理器,因此它可以在幕后将每个新创建的语句与其关联。但是库如何获得对上下文管理器的访问?
POPMUISE
相关分类