Wie können deterministische Vektoroperationen in PYMC3 implementiert werden? zum Beispiel das Modell:Wie fügt man deterministische Vektoroperationen in PYMC3 hinzu?
M ~ Unif(-5, 5)
S ~ Unif(0, |1/M|)
data ~ Normal(M, S)
M ist Mittelwert der Gauß-Beobachtungen und S ist Standardabweichung. Es wird angenommen, dass die Standardabweichung in [0, | 1/M |] gleichmäßig verteilt ist (der Absolutwert ist notwendig, wenn M negativ ist).
dieser Code:
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)
hat den Fehler:
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.
brauch ich Theanos verwenden, um diese Operation auf Vektoren zu erreichen?
danke. auch: wann kann man in PYMC3 deterministische Ausdrücke von Zufallsvariablen wie '' abs (1./M) '' verwenden, ohne dafür benutzerdefinierte Funktionen zu verwenden? Warum funktioniert '' pm.Uniform ("S", np.zeros (Größe), abs (1./M), Form = Größe) '' einfach arbeiten? – jll
Gern geschehen. Theano verstehen Operatoren wie '/' und Sie können Python/NumPy und dieano-Variablen im Allgemeinen mischen. Was Sie nicht direkt tun können, ist die Verwendung der Variablen theano für Funktionen, die Python/NumPy-Variablen erwarten. In diesem Fall können Sie den Dekorator 'as_op' verwenden. – aloctavodia