Ошибка значения NaN прервала вычисление кода Python
Я использую пакет EMCEE Python. Одна из частей следующего кода дает мне ошибкуValueError: lnprob returned NaN.
NaN value of lnprob for parameters:
[7.00933061e+01 4.50865882e-01 8.10716795e-01 7.28231108e-02
1.52792946e-03 5.17048304e-02]
Traceback (most recent call last):
...
ValueError: lnprob returned NaN.
эта ошибка прерывает расчет, и я не знаю, как преодолеть. Мне нужно пропустить эту ошибку и продолжить расчет. Я имею в виду, мне нужно передать эту ошибку ИЛИ те числа, которые приводят к этому.
Единственное, что пришло мне в голову, это добавить строку в lnprob
функция как:
if not np.isfinite(lp):
return -np.inf
if np.isnan(lp):
return -np.inf
но это не правильно.
Я старался try
а также except
в def func(theta)
а также def lf(theta)
но опять не работает.
def log_prior(H0, od0, c, b, Orc, M):
if 0.4 < od0 < 0.9 and 50 < H0 < 90 and 0 < c < 3 and 0 < b < 1 and -0.3 < M < 0.2 and 0 < Orc < 0.1:
return 0.0
return -np.inf
def lnlike(H0, od0, c, b, Orc, M):
lg = -chi2(H0, od0, c, b, Orc, M)/2.
return lg
def lnprob(H0, od0, c, b, Orc, M):
lp = log_prior(H0, od0, c, b, Orc, M)
if not np.isfinite(lp):
return -np.inf
return lp + lnlike(H0, od0, c, b, Orc, M)
def func(theta):
H0, od0, c, b, Orc, M = theta
return -2. * lnprob(H0, od0, c, b, Orc, M)
def lf(theta):
H0, od0, c, b, Orc, M = theta
return lnprob(H0, od0, c, b, Orc, M)
Пожалуйста, помогите мне, как передать те значения, которые читаются в log_prior
функция или передать значение Nan lnprob, спасибо за вашу помощь