The logprob term for z in the following graph depends on x_rv when it should depend on at.log(y_vv):
import aeppl
import aesara
import aesara.tensor as at
srng = at.random.RandomStream()
x = srng.normal(name="x")
y = at.exp(x)
z = srng.normal(x, name="z")
y_vv = y.clone()
z_vv = z.clone()
logprob, vvs = aeppl.joint_logprob(y, z)
aesara.dprint(logprob)
# Sum{acc_dtype=float64} [id A]
# |MakeVector{dtype='float64'} [id B]
# |Sum{acc_dtype=float64} [id C]
# | |Elemwise{add,no_inplace} [id D]
# | |Check{sigma > 0} [id E]
# | | |Elemwise{sub,no_inplace} [id F]
# | | | |Elemwise{sub,no_inplace} [id G]
# | | | | |Elemwise{mul,no_inplace} [id H]
# | | | | | |TensorConstant{-0.5} [id I]
# | | | | | |Elemwise{pow,no_inplace} [id J]
# | | | | | |Elemwise{true_div,no_inplace} [id K]
# | | | | | | |Elemwise{sub,no_inplace} [id L]
# | | | | | | | |Elemwise{log,no_inplace} [id M]
# | | | | | | | | |<TensorType(float64, ())> [id N]
# | | | | | | | |TensorConstant{0.0} [id O]
# | | | | | | |TensorConstant{1.0} [id P]
# | | | | | |TensorConstant{2} [id Q]
# | | | | |Elemwise{log,no_inplace} [id R]
# | | | | |Elemwise{sqrt,no_inplace} [id S]
# | | | | |TensorConstant{6.283185307179586} [id T]
# | | | |Elemwise{log,no_inplace} [id U]
# | | | |TensorConstant{1.0} [id P]
# | | |All [id V]
# | | |Elemwise{gt,no_inplace} [id W]
# | | |TensorConstant{1.0} [id P]
# | | |TensorConstant{0.0} [id X]
# | |Elemwise{neg,no_inplace} [id Y]
# | |Elemwise{log,no_inplace} [id Z]
# | |<TensorType(float64, ())> [id N]
# |Sum{acc_dtype=float64} [id BA]
# |Check{sigma > 0} [id BB] 'z_logprob'
# |Elemwise{sub,no_inplace} [id BC]
# | |Elemwise{sub,no_inplace} [id BD]
# | | |Elemwise{mul,no_inplace} [id BE]
# | | | |TensorConstant{-0.5} [id BF]
# | | | |Elemwise{pow,no_inplace} [id BG]
# | | | |Elemwise{true_div,no_inplace} [id BH]
# | | | | |Elemwise{sub,no_inplace} [id BI]
# | | | | | |z [id BJ]
# | | | | | |normal_rv{0, (0, 0), floatX, False}.1 [id BK] 'x'
# | | | | | |RandomGeneratorSharedVariable(<Generator(PCG64) at 0x7F9003169C40>) [id BL]
# | | | | | |TensorConstant{[]} [id BM]
# | | | | | |TensorConstant{11} [id BN]
# | | | | | |TensorConstant{0.0} [id O]
# | | | | | |TensorConstant{1.0} [id P]
# | | | | |TensorConstant{1.0} [id P]
# | | | |TensorConstant{2} [id BO]
# | | |Elemwise{log,no_inplace} [id BP]
# | | |Elemwise{sqrt,no_inplace} [id BQ]
# | | |TensorConstant{6.283185307179586} [id BR]
# | |Elemwise{log,no_inplace} [id BS]
# | |TensorConstant{1.0} [id P]
# |All [id BT]
# |Elemwise{gt,no_inplace} [id BU]
# |TensorConstant{1.0} [id P]
# |TensorConstant{0.0} [id BV]
Example given originally in #119. We should be able to fix this after #78.
The logprob term for
zin the following graph depends onx_rvwhen it should depend onat.log(y_vv):Example given originally in #119. We should be able to fix this after #78.