PYMC 父级为 class 属性的确定性变量

PYMC Deterministic variable with parent as class attribute

我正在尝试创建如下所示的 PYMC 确定性变量。

@pymc.deterministic
def tau(s = sigma):
    return 1.0/(s**2)

但是,在我的例子中,模型参数(PYMC 随机变量)被定义为 class 属性。因此,sigma 只能由 class 方法访问(通过 self.sigma)。试图使它成为一个 class 方法,如下所示

@pymc.deterministic
def tau(self, s = None):
    sigma = self.sigma
    return 1.0/(sigma**2)

抛出一个错误(很明显)。

ValueError: Deterministic tau: no parent provided for the following label: self

如何创建父级为 class 属性的 PYMC 确定性变量?

P.S。不确定这是否重要,但我正在使用 PYMC 2.x

感谢 this mildly related question, I was able to figure out a way to capture class attributes as parents to a PYMC Deterministic variable. The solution is to use PYMC's Lambda class 将 Python lambda 函数转换为确定性实例。这似乎是一种相当干净的方式。

self.tau = pymc.Lambda('tau', lambda s = self.sigma: 1.0/(s**2))