2 回答

TA貢獻(xiàn)1779條經(jīng)驗 獲得超6個贊
一種解決方法是抑制編譯錯誤:
import theano
theano.config.gcc.cxxflags = "-Wno-c++11-narrowing"
這些錯誤對程序正確性的影響程度尚不清楚。當(dāng)我在CentOS 7上編譯時,它們不會出現(xiàn)(即使使用顯式地檢查它們-Wc++11-narrowing)。在Mac OS X上具有抑制錯誤的采樣結(jié)果與在CentOS上沒有采樣結(jié)果是可比的。
我還是希望看到一個可以解釋根本問題的答案。

TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊
是的-您必須對更高尺寸的形狀更加明確。該庫確實有點“聰明”,但是如果您提供shape參數(shù),它將使用該參數(shù)。
您的示例在語法上通過設(shè)置固定
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參數(shù)化beta分布的支持。
設(shè)置還sd_g = pm.HalfNormal('sd_g', sd=0.1, shape=(G, 1))允許您從模型中采樣,盡管這可能不是您想要的!
添加回答
舉報