在pymc3中,如何将Heaviside阶跃函数用作确定性转换?
任何步进函数都可以使用,但我想问的是Heaviside步进函数专门用于将其与文档中称为“步进函数”的歧义区分开来,后者是在讨论sampling步进,与我正在寻找的东西使找到相关文档变得很难找到(如果存在)。另外,我也找不到某个地方记录了所有受支持的转换。
我想要1 if x >= 0 else 0
,但是按原样编写它不会起作用,因为大概x >= 0
会求值为对象,因此if
表达式将立即求值为1,然后h
始终为1 。
import pymc3 as pm
with pm.Model() as model:
x = pm.Normal('x', mu=0, sigma=1)
h = pm.Deterministic('h', 1 if x >= 0 else 0) # ???
尝试使用theano.tensor.switch
。也就是说,
theano.tensor.switch