Я пытаюсь подогнать кривую к некоторым данным с помощью 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
В основном это происходит потому, что я беру журнал гауссовских и один из предложенных значений средств равно одной из точек данных.
Я хотел бы повторить запуск кода, возможно, используя try и except, пока эти предупреждения Runtime не возникнут. Спасибо!
Edit: После замечания @sgDysregulation я попытался:
while True:
try:
print "Before mcmc"
sampler.run_mcmc(pos, 500)
print "After mcmc"
break
except Exception as e:
print "Warning detected"
continue
, где я попытался использовать как «пропуск» и «продолжить» заявление, поставив «сломать» в то время как петлю и внутри «попробовать ». Также попробовал «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
'RuntimeWarning' является [' Warning'] (https://docs.python.org/2/library/warnings.html), а не «Исключением». Вы должны сказать python, чтобы преобразовать это предупреждение в исключение, если вы хотите, чтобы оператор 'try/except' работал (например, http://stackoverflow.com/questions/16236644/userwarning-converting-a-masked-element-to- nan/16237927 # 16237927, или см. ответ @ ali_m). –