pymc3 海维赛德阶跃函数
pymc3 Heaviside step function
在 pymc3 中,Heaviside 阶跃函数如何应用为确定性变换?
任何阶跃函数都可以使用,但我问的是 Heaviside 阶跃函数,专门用于消除文档中提到的 "step function" 的歧义,后者讨论的是 采样 步骤,这些步骤与我正在寻找的内容无关,并且如果存在相关文档,则很难找到相关文档。此外,我无法找到记录所有支持的转换的地方。
我想要 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
。也就是说,
import pymc3 as pm
import theano.tensor as tt
with pm.Model() as model:
x = pm.Normal('x', mu=0, sigma=1)
h = pm.Deterministic('h', tt.switch(x < 0, 0, 1))
在 pymc3 中,Heaviside 阶跃函数如何应用为确定性变换?
任何阶跃函数都可以使用,但我问的是 Heaviside 阶跃函数,专门用于消除文档中提到的 "step function" 的歧义,后者讨论的是 采样 步骤,这些步骤与我正在寻找的内容无关,并且如果存在相关文档,则很难找到相关文档。此外,我无法找到记录所有支持的转换的地方。
我想要 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
。也就是说,
import pymc3 as pm
import theano.tensor as tt
with pm.Model() as model:
x = pm.Normal('x', mu=0, sigma=1)
h = pm.Deterministic('h', tt.switch(x < 0, 0, 1))