2
如何在PYMC3中實現確定性向量運算?例如型號:如何在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實現對向量這個操作?
謝謝。另外:什麼時候可以使用PYMC3中的隨機變量的確定性表達式,比如'abs(1。/ M)''而不用爲它們定製函數?爲什麼''pm.Uniform(「S」,np.zeros(size),abs(1/M),shape = size)''簡單地工作? – jll
不客氣。 Theano理解像'/'這樣的運算符,你可以混合python/NumPy和theano變量。你不能直接做的是對期望python/NumPy變量的函數使用theano變量。在這種情況下,你可以使用'as_op'裝飾器。 – aloctavodia