[ ] test_adjoint.py::test_sequential_sum_product_adjoint: xfail_param(MarkovProduct, reason="mysteriously doubles adjoint values?")MarkovProduct is evaluated again at actual.reduce(sum_op) line:
with AdjointTape() as actual_tape:
actual = impl(sum_op, prod_op, trans, time, {"prev": "curr"})
actual = actual.reduce(sum_op)
It might be due to " .reduce binds variables, which triggers alpha-renaming and reinterprets actual?" from slack discussion with @eb8680
[ ] MarkovProduct is not expanded by lazy (or any other Funsor not defined in adjoint_ops). A temporary solution (#492 ) might be to define an adjoint for MarkovProduct. Still work in progress.
[ ] TraceEnum_ELBO uses AdjointTape to calculate expectations. Under eager evaluation nan gradients appear in more than half of the tests as caught by https://github.com/pyro-ppl/pyro/pull/2782:
This is to track issues related to using adjoint.
test_adjoint.py::test_sequential_sum_product_adjoint
:xfail_param(MarkovProduct, reason="mysteriously doubles adjoint values?")
MarkovProduct
is evaluated again atactual.reduce(sum_op)
line:It might be due to "
.reduce
binds variables, which triggers alpha-renaming and reinterpretsactual
?" from slack discussion with @eb8680MarkovProduct
is not expanded bylazy
(or any other Funsor not defined inadjoint_ops
). A temporary solution (#492 ) might be to define an adjoint forMarkovProduct
. Still work in progress.TraceEnum_ELBO
usesAdjointTape
to calculate expectations. Undereager
evaluationnan
gradients appear in more than half of the tests as caught by https://github.com/pyro-ppl/pyro/pull/2782: