Портирование кода PyMC для запуска на PyMC3, как создать стохастический дистрибутив подкласса? - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь разобраться с PyMC3, чтобы портировать существующий код, написанный (и работающий) для PyMC. Мне нужно создать собственный дистрибутив, который является стохастическим подклассом.

В исходном коде PyMC использовались такие функции, как pymc.valuewrapper () и pymc.new_dist_class (). Вот краткое описание кода PyMC:

def a_logp(...):
   ...
   return something 

def a_random(...):
    ...
    return something

dtype = np.float64
docstr = "mydist"
parent_names = ["a", "b"]
parents_default = {"a": 0, "b": 1, "value": 0.5}
wrapped_logp_partial_gradients = {}
logp = pymc.valuewrapper(a_logp)
mv = False

UniformNonzero = pymc.new_dist_class(
    dtype,
    node_name,
    parent_names,
    parents_default,
    docstr,
    logp,
    a_random,
    mv,
    wrapped_logp_partial_gradients,
)

Мои вопросы: поддерживает ли PyMC3 эквивалентную функциональность для этого? Я вижу, что PyMC3 поддерживает функцию DensityDist () для создания пользовательских дистрибутивов с использованием logp и случайных функций. Но как мне определить родительскую информацию? Или я должен копать глубже, например, в Theano?

...