重试直到没有 RuntimeWarning
Retry until no RuntimeWarning
我正在尝试使用 MCMC 将曲线拟合到某些数据。
由于我的特定问题的性质,偶尔(运行 代码的 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,直到不再出现这些运行时警告。
谢谢!
编辑:
根据@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" 中。还尝试了 "RuntimeWarning" 而不是 "Exception"。
上面代码片段的输出没有显示检测到任何警告。
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
建议您在问题中包含您目前尝试过的内容,
while True:
try:
#your code here
break
except Exception as e:
continue
您可以使用 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
我正在尝试使用 MCMC 将曲线拟合到某些数据。
由于我的特定问题的性质,偶尔(运行 代码的 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,直到不再出现这些运行时警告。 谢谢!
编辑: 根据@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" 中。还尝试了 "RuntimeWarning" 而不是 "Exception"。
上面代码片段的输出没有显示检测到任何警告。
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
建议您在问题中包含您目前尝试过的内容,
while True:
try:
#your code here
break
except Exception as e:
continue
您可以使用 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