問題タブ [pymc3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
theano - 階層型pymc3モデルでラムダ関数を作成できません
以下に示すモデルを PyMC 3 で作成しようとしていますが、ラムダ関数を使用して確率を観測データに適切にマッピングする方法がわかりません。
私が得るエラーは
私が構築しようとしているモデルでは、の要素は、z
どの要素がphi
対応する観測値の確率を与えるかを示しますdata
( RV に配置されますw
)。言い換えると、
Theano 式で確率を定義するか、Theano を使用する必要があるas_op
と思いますが、このモデルでそれを行う方法がわかりません。
python - pymc3 決定論的変数の形状を処理する方法
私は、いくつかの精神物理学的行動データの階層モデルを取得して、pymc3 で実行することに取り組んできました。私は全体的に信じられないほど感銘を受けましたが、Theano と pymc3 の速度を上げようとした後、ほとんど機能するモデルを手に入れましたが、いくつかの問題があります。
このコードは、パラメーター化されたバージョンのワイブルを 7 セットのデータに適合させるように作成されています。各試行は、バイナリ ベルヌーイの結果としてモデル化されますが、しきい値 (高さ、幅、高さ (典型的なガウスの a、c、および d) のガウス関数に適合するために使用される y 値としての出力)。
パラメータ化されたワイブルの使用はうまく機能しているようで、ワイブルの勾配が階層化され、データのチャンクごとにしきい値が個別に適合されます。ただし、 k および y_est から得られる出力は、それらが正しいサイズではない可能性があると思わせ、確率分布とは異なり、形状を指定できるようには見えません (これを行うための theano の方法がない限り)。私は見つけていません-しかし、私が読んだことから、theanoで形状を指定するのは難しいです)。
最終的には、y_est を使用してガウスの高さまたは幅を推定したいと思いますが、現在の出力は、y_est と k のサイズの問題に起因すると思われる信じられないほどの混乱をもたらします。以下のコードは、いくつかのデータをシミュレートする必要があり、その後にモデルが続きます。このモデルは、個々のしきい値をフィッティングして勾配を取得するのに優れた仕事をしますが、残りの部分を処理するとうまくいきません。
ご覧いただきありがとうございます。これまでのところ、pymc3 には非常に感銘を受けています。
編集:さて、y_est.tag.test_value.shape による形状出力は次のようになります
ここで問題が発生していると思いますが、私の側で構築が不十分なだけかもしれません。k は適切な形をしています (unique_xval ごとに 1 つの k 値)。y_est は、難易度ごとに 1 つの推定値 (unique_xval ごとに 1 つの y_est) ではなく、データ セット全体 (101x7) を出力しています。これを制御するために y_est が df_y_vals の特定のサブセットを取得するように指定する方法はありますか?
python - PyMC3 & Theano - 動作する Theano コードは、pymc3 のインポート後に動作しなくなります
完全に機能するいくつかの単純な theano コードは、pymc3 をインポートすると機能しなくなります
エラーを再現するためのスニペットを次に示します。
そして、前のスニペットごとに次のエラーが発生します。
何か案は ?前もって感謝します
probability - PyMC: 隠れマルコフ モデル
PyMC は、現在利用可能なバージョンで、連続放出 HMM をモデル化するのにどの程度適していますか?
E ステップと M ステップを更新せずにモデルのバリエーションを簡単に探索できるフレームワークと、モデルに加えたすべての変更に対する動的計画法の再帰に関心があります。
より具体的な質問は次のとおりです。
- PyMC で HMM をモデル化するとき、解決したい「典型的な」タスクに答えることができますか?つまり、パラメータ推定に加えて、(通常はビタビ アルゴリズムで行われるように)最も可能性の高いシーケンスを推測したり、平滑化の問題を解決したりできますか?
- 期待値の最大化を使用した実装と比較して、サンプリング ベースのアプローチは遅くなると思います。これにより、モデル構築側の柔軟性が向上する場合は、それで問題ありません。モデルのプロトタイピングに PyMC を使用することを想像します。ただし、PyMC が 10k を超える観測値を持つモデルの推論を適切な時間内に処理できると期待できるかどうか疑問に思っています。
- モデル構築のために PyMC2 または PyMC3 から始めることをお勧めしますか。推論エンジンがバージョン間で変更されたことは知っているので、特にどのタイプのサンプラーがより適しているのだろうかと思います。
PyMC が私のユース ケースに適していないと思われる場合は、それも答えとして役立ちます。
bayesian - pymc3 の最適化エラー
pymc3 を使用して、比較的単純な階層ベイジアン モデルを作成しようとしています。ただし、エラーが発生し続けます。コードは次のとおりです。
しかし、find_MAP() 関数に関してエラーが発生し続けます。誰でもこのエラーを説明できますか?
theano - 観測データを Pymc3 のモデル定義に融合しないための回避策はありますか?
問題の定義: 次のような「最も単純な」モデル (pymc3 の例から) を検討してください。
モデル構造を固定するように変更したいのですが、前の (観察された) データセットに新しいデータ ポイントを追加するたびに、サンプリングを数回繰り返します。観察されたデータは何らかの形でモデル定義内に埋め込まれているため、これを行う唯一の方法は、モデル定義全体をループ内に配置することです。
モデルが大きい場合、特に不要なオーバーヘッドが発生する可能性があります。同じモデルを繰り返し定義するオーバーヘッドを抑えるために、次のようなアイデアで同じ結果が得られるような解決策があるかどうか疑問に思います。
またはさらに良い:
for-loop - Theano for ループのパフォーマンスの向上
私がやりたいことを達成する次のコードがあります。しかし、For ループを回避することでそれを行うより良い方法があるかどうか疑問に思っています。これらの操作を何度も呼び出すため、ここではパフォーマンスが重要です。
「スキャン」と「関数」を使用することで改善できると思いますが、それが明らかなほど Theano の経験が十分ではありません。すべてを theano.function の中に入れようとしましたが、うまくいきませんでした。
ちなみに、これは制約付き確率行列因数分解 (Salakhutdinov と Mnih による論文の式 7) の実装です。私はpymc3でそれをやっているので、「W」と「Y」は本当に確率的なpymc3テンソルです(これは単なるtheanoテンソルだと思います)。
ありがとう!