在 PyMC3 中设置确定性分布

Setting deterministic distributions in PyMC3

我是 PyMC3 新手 这是一些 PyMC2 - 我是否需要做一些特定的事情,比如在 Theano 中编译以将其转换为 PyMC3 代码?

 @pymc.deterministic
    def away_theta(home_team=home_team, 
                   away_team=away_team, 
                   home=home, 
                   atts=atts, 
                   defs=defs, 
                   intercept=intercept): 
        return np.exp(intercept + 
                      atts[away_team] + 
                      defs[home_team])   

我收到类似

的错误
AsTensorError: ('Cannot convert home_theta to TensorType', <class 'pymc.PyMCObjects.Deterministic'>)

是的,确定性转换需要是 pymc3 中的 theano 表达式。因此,不要使用 np.exp,而是使用 theano.tensor.exp:

import theano.tensor as T
import pymc3 as pm

with Model():
    ...
    regression = pm.Deterministic('regression', T.exp(intercept + atts[away_team] + defs[home_team]))
    ...