Я использую EMCEE .Я пишу часть, проблема которой возникла в следующем.Я столкнулся с этой ошибкой ValueError: lnprob returned NaN.
эта ошибка прерывает расчет, и я не знаю, как преодолеть.Итак, я должен сделать что-то, чтобы передать эту ошибку, чтобы продолжить остальные вычисления.
Единственное, что мне пришло в голову, это добавить строку в lnprob
функцию, такую как:
if not np.isfinite(lp):
return -np.inf
if np.isnan(lp):
return -np.inf
но это не правильно
код:
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)
Я ценю вашу помощь.