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))
我正在尝试创建如下所示的 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))