重试,直到没有运行时警告



我正在尝试使用 MCMC 将曲线拟合到某些数据中。

由于我的特定问题的性质,偶尔(运行代码的 1/5 次)会遇到一些奇点,代码会向我发出运行时警告并继续给出错误的答案。

/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 和例外,直到这些运行时警告不发生。谢谢!

编辑:根据@sgDysregulation的评论,我尝试过:

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

我尝试同时使用"pass"和"continue"语句,将"break"放在 while 循环中,将"try"放在"try"中。还尝试了"运行时警告"而不是"异常"。

上述代码段的输出未显示检测到任何警告。

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
您可以使用

np.errstate上下文管理器来捕获警告,就好像它是异常一样:

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

建议您在问题中包含到目前为止尝试的内容,

while True:
    try: 
        #your code here
        break
    except Exception as e:
        continue

相关内容

  • 没有找到相关文章

最新更新