【发布时间】:2017-02-13 01:38:40
【问题描述】:
如何在 PYMC3 中实现确定性向量运算?例如模型:
M ~ Unif(-5, 5)
S ~ Unif(0, |1 / M|)
data ~ Normal(M, S)
M 是高斯观测的平均值,S 是标准差。假设标准偏差均匀分布在 [0, |1/M|] 中(当 M 为负时需要绝对值)。
这段代码:
import pymc3 as pm
import numpy as np
size = 20
with pm.Model() as model:
# M ~ Unif(-5, 5)
M = pm.Uniform("M", -5., 5., shape=size)
# S ~ Unif(0, |1 / M|)
# how to divide by vector and take abs val?
S = pm.Uniform("S", np.zeros(size), abs(1. / M), shape=size)
data = pm.Normal("data", M, sd=S, shape=size)
有错误:
File "/Users/mvd/anaconda/lib/python2.7/site-packages/pymc3/distributions/distribution.py", line 67, in get_test_val
str(defaults) + " pass testval argument or adjust so value is finite.")
AttributeError: <pymc3.distributions.continuous.Uniform object at 0x10d1e1f10> has no finite default value to use, checked: ['median', 'mean', 'mode'] pass testval argument or adjust so value is finite.
我需要使用 theano 来实现对向量的这种操作吗?
【问题讨论】:
标签: python numpy theano pymc pymc3