2016-11-16 6 views
0

Pymc3で、次のジョイント事前分布からのサンプル:ユーザー定義Pymc3&Theano例外で合同事前分布私はモデルを構築しようとしている

F(a、b)は〜(A + B)^

ValueError: length not known: Elemwise{le,no_inplace} [id A] '' 
|ab [id B] 
|DimShuffle{x} [id C] '' 
    |TensorConstant{0} [id D] 

アイム:、B> 0

with pm.Model() as the: 

    def ab_dist(value=[1.0,1.0]): 
     return T.switch(any(T.le(value, 0)), -np.Inf, T.log(np.power((value[0] + value[1]), -2.5))) 

    ab = pm.DensityDist('ab', ab_dist, shape=2, testval = [1,1]) 

    a = ab[0] 
    b = ab[1] 

    p = pm.Beta('p', a, b) 

    trace = pm.sample(20000) 

私はPymc3's github pageに開かれたが、それでも次のエラーを取得しています問題の例を踏襲してきました(-5/2) Theanoに新しいとsuを持っていないデバッグでccess。私はこれを設定する適切な方法と、なぜ私が知られていない例外を受け取っているのかを知りたいと思います。私のコードは以下の通りです。

答えて

0

私は私の答えを見つけたと信じています。 Theano.Tensor条件フローの任意の(値)部分に問題があったようです。 T.le(値[0]、0)| T.le(値[1]、0)に変更すると、問題なく動作するように見えます。

以下

更新されたコード:

with pm.Model() as the: 
    def ab_dist(value=[1.0,1.0]): 
     return T.switch(T.le(value[0], 0)|T.le(value[1], 0), -np.Inf, T.log(np.power((value[0] + value[1]), -2.5))) 

    ab = pm.DensityDist('ab', ab_dist, shape=2, testval = [1,1]) 

    a = ab[0] 
    b = ab[1] 

    p = pm.Beta('p', a, b) 

    trace = pm.sample(10000) 
関連する問題