Есть ли способ для pymc3 вызвать исключение, когда target_accept не встречается? - PullRequest
0 голосов
/ 08 мая 2018

В настоящее время я работаю с образцами и обучающими моделями в цикле. и я хочу пропустить те, когда они не соответствуют требованию target_except. это возможно?

Auto-assigning NUTS sampler...
Initializing NUTS using jitter+adapt_diag...
Multiprocess sampling (4 chains in 4 jobs)
NUTS: [defs_star, atts_star, intercept, sd_def_log__, sd_att_log__, home]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 2000/2000 [02:31<00:00, 13.21it/s]
There were 5 divergences after tuning. Increase `target_accept` or reparameterize.
The acceptance probability does not match the target. It is 0.227249509897, but should be close to 0.8. Try to increase the number of tuni
ng steps.
The gelman-rubin statistic is larger than 1.05 for some parameters. This indicates slight problems during sampling.
The estimated number of effective samples is smaller than 200 for some parameters.
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 3000/3000 [00:06<00:00, 467.94it/s]
[8, [56]]

EDIT

Я не хочу менять параметры или настраивать модель в настоящее время. Это будет в другом вопросе.

1 Ответ

0 голосов
/ 08 мая 2018

В настоящее время есть два способа сделать это: первый - «благословенный», который сейчас не очень гибок.

with pm.Model():
    ...
    trace = pm.sample()

trace.report.raise_ok()

Это увеличит значение ValueError для расхождений или плохой настройки, но это довольно новое, так что вы еще не можете легко определить типы расхождений.

Другой способ, который намного менее стабилен, это тот же объект trace, что и выше,

from pymc3.backends.report import WarningType


if any(w.kind is WarningType.BAD_ACCEPTANCE for w in trace.report._warnings):
    raise SomeCustomError(w.message)

Атрибут _warnings помечен как закрытый и может измениться в будущем, но может предоставить вам большую гибкость в доступе к статистике конвергенции.

...