0

非常に複雑で、NUTS を使用してサンプルする多変量、連続、カスタム/任意の分布関数を定義しようとしています。すると、次のエラーが表示されます。

ERROR (theano.gof.opt): SeqOptimizer apply <theano.scan_module.scan_opt.PushOutNonSeqScan object at 0x000000000AC0E390>

ERROR:theano.gof.opt:SeqOptimizer apply <theano.scan_module.scan_opt.PushOutNonSeqScan object at 0x000000000AC0E390>

ERROR (theano.gof.opt): Traceback:
ERROR:theano.gof.opt:Traceback:

ERROR (theano.gof.opt): Traceback (most recent call last):
  File "C:\Anaconda\envs\py3conda\lib\site-packages\theano\gof\opt.py", line 196, in apply
    sub_prof = optimizer.optimize(fgraph)
  File "C:\Anaconda\envs\py3conda\lib\site-packages\theano\gof\opt.py", line 82, in optimize
    ret = self.apply(fgraph, *args, **kwargs)
  File "C:\Anaconda\envs\py3conda\lib\site-packages\theano\scan_module\scan_opt.py", line 216, in apply
    self.process_node(fgraph, node)
  File "C:\Anaconda\envs\py3conda\lib\site-packages\theano\scan_module\scan_opt.py", line 282, in process_node
    **dict(return_list=True))[0].owner
  File "C:\Anaconda\envs\py3conda\lib\site-packages\theano\gof\op.py", line 507, 
in __call__
    node = self.make_node(*inputs, **kwargs)
  File "C:\Anaconda\envs\py3conda\lib\site-packages\theano\tensor\basic.py", line 1252, in make_node
    raise TypeError("MaxAndArgmax needs a constant axis")

TypeError: MaxAndArgmax needs a constant axis

カスタム logp 関数の出力が theano 変数スカラーであることを確認しました。また、カスタム分布宣言の外で、logp を返す theano 関数を正常にコンパイルし、多変量入力に対する勾配も返すことができました。 . 私のカスタム配布関数は、上記のエラーの生成に関与しているように見えるスキャン操作を使用していません。また、スキャン操作に関して、形状の推測に関する警告も受け取ります (エラー メッセージについては、こちらでフォローアップできます)。

私が行った調査から、問題はおそらく NUTS によるヘシアンの計算に起因しているように思えますが、よくわかりません。私はpymc3とtheanoの経験が浅いので、ここでの洞察は大歓迎です。

ありがとう!

アレックス

アップデート:

私は今、ヘシアンがこのエラーを引き起こしているとかなり確信しているので、これはpymc3の問題よりもtheanoの問題になります。pymc3 の外部で関数を完全に評価することでこれをテストできましたがtheano.gradient.hessian()、上記とまったく同じエラーを受け取りました。また、この問題と同様に、尤度関数の評価に を使用してtensor.min()いたため、上記のエラーが発生しました。ただし、min() を sum() に置き換えて二重チェックを行ったところ、theano は関数のコンパイルに失敗しましたが、エラーはスローされませんでした (ブロックされただけです)... ただし、gpu でのみです。そこに「偽の」sum()操作を保持したまま、ヘシアンは私のCPUで正常に評価されました。とにかく、連続性と凸性に関しても尤度関数に問題があると思うので、この道を進むことはありません。

4

0 に答える 0