Ошибка значения 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, спасибо за вашу помощь

0 ответов

Другие вопросы по тегам