python - pymc3 重载阶跃函数
问题描述
在 pymc3 中,如何将 Heaviside 阶跃函数用作确定性变换?
任何阶跃函数都可以工作,但我要专门询问 Heaviside 阶跃函数,以消除它与文档所指的“阶跃函数”的歧义,后者是关于采样步骤,这与我正在寻找的内容无关如果相关文档存在,则很难找到相关文档。此外,我无法找到记录所有支持的转换的地方。
我想要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))
推荐阅读
- php - 注意:常量 WPCF7_AUTOP 已经定义在
- android - 我的自定义 BroadcastReceiver 无法在 API 级别 16 以上工作
- fortran - 使用 Fortran 从文件中提取指定行
- python - 使用 LMFIT 将对数正态模型拟合到数据
- javascript - Wordpress 的指针
- keras - 如何使用 keras 实现多标签分类神经网络
- javascript - 如何在 AWS 上向 EC2 发出 AJAX 请求,需要登录名/密码
- php - 图像上传仍在 CI 中通过回调验证提交
- split - 使用c#将文本文件拆分为双字
- javascript - 无法让 babel-loader 为 String.prototype.trimLeft()(又名 trimStart)添加 polyfill