2 回答
TA贡献1779条经验 获得超6个赞
一种解决方法是抑制编译错误:
import theano
theano.config.gcc.cxxflags = "-Wno-c++11-narrowing"
这些错误对程序正确性的影响程度尚不清楚。当我在CentOS 7上编译时,它们不会出现(即使使用显式地检查它们-Wc++11-narrowing)。在Mac OS X上具有抑制错误的采样结果与在CentOS上没有采样结果是可比的。
我还是希望看到一个可以解释根本问题的答案。
TA贡献1826条经验 获得超6个赞
是的-您必须对更高尺寸的形状更加明确。该库确实有点“聪明”,但是如果您提供shape参数,它将使用该参数。
您的示例在语法上通过设置固定
with pm.Model() as m:
# Parameters
p_g = pm.Beta('p_g', 1., 1., shape=(G, 1))
sd_g = pm.HalfNormal('sd_g', sd=1, shape=(G, 1))
# Observed proportions
p_gk = pm.Beta('p_gk', mu=p_g.dot(np.ones((1,K))), sd=sd_g.dot(np.ones((1, K))), shape=(G, K), observed=data)
trace = pm.sample()
注意,运行将m.check_test_point()显示p_gk具有0的概率。这是因为sd_g太宽了,PyMC3尝试将其初始化为0.8,这超出了mu, sd参数化beta分布的支持。
设置还sd_g = pm.HalfNormal('sd_g', sd=0.1, shape=(G, 1))允许您从模型中采样,尽管这可能不是您想要的!
添加回答
举报