2017-01-16 10 views
0

MCMCを使用してデータにカーブを合わせようとしています。RuntimeWarningがなくなるまで再試行

私の特定の問題の性質上、時には(コードの1/5を実行する)いくつかの特異点が発生し、コードがRuntimeWarningを発生させ、間違った答えを出す。

/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:335: RuntimeWarning: invalid value encountered in subtract 
/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:336: RuntimeWarning: invalid value encountered in greater 

これは基本的には私がガウスのログをとっており、平均の提案値の1つがデータポイントの1つと等しいために起こります。

これらのランタイム警告が発生しない限り、おそらくtryとexceptを使用して、コードの実行を再試行します。 ありがとう!私は「合格」の両方を使用して入れて、文を「継続」試してみました

while True: 
    try: 
     print "Before mcmc" 
     sampler.run_mcmc(pos, 500) 
     print "After mcmc" 
     break 
    except Exception as e: 
     print "Warning detected" 
     continue 

は内部ループと内側の間、「してみてください「破る」:

編集:私は試してみました@sgDysregulationによってコメントに続き "また、 "Exception"の代わりに "RuntimeWarning"を試しました。

上記スニペットからの出力には、警告が検出されていないことが示されています。

Before mcmc 
/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:335: RuntimeWarning: invalid value encountered in subtract 
/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:336: RuntimeWarning: invalid value encountered in greater 
After mcmc 
+0

'RuntimeWarning'は' '警告' '(https://docs.python.org/2/library/warnings.html)です。例外ではありません。 'try/except'文を動作させたい場合は、Pythonにその警告を例外に変換するように指示する必要があります(例:http://stackoverflow.com/questions/16236644/userwarning-converting-a-masked-element-to- nan/16237927#16237927、または@ ali_mの回答を参照してください)。 –

答えて

1

をお勧めします:

while True: 
    try: 
     print("Before mcmc") 
     with np.errstate(all='raise'): 
      sampler.run_mcmc(pos, 500) 
     print("After mcmc") 
     break 
    except Exception: 
     print("Warning detected") 
     continue 
0

あなたが、それは例外であるかのように警告をキャッチするnp.errstateコンテキストマネージャを使用することができ、あなたは、あなたの質問に、これまでに試したものを含める

while True: 
    try: 
     #your code here 

     break 
    except Exception as e: 
     continue 
+0

私はこれを試して、コードはいつものように続けます。 breakステートメントは、最初の試行の直後にループを終了させませんか? – Anna

+0

パスの代わりに続行してください。私のコードをテストできません。 – sgDysregulation

関連する問題