This repository was archived by the owner on Nov 17, 2025. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 20
This repository was archived by the owner on Nov 17, 2025. It is now read-only.
The behavior when conditioning on transforms of measures is incorrect #202
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededimportantThis label is used to indicate priority over things not given this labelThis label is used to indicate priority over things not given this labelrv-transformsInvolves transforms applied to random variablesInvolves transforms applied to random variables
Description
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.
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is neededimportantThis label is used to indicate priority over things not given this labelThis label is used to indicate priority over things not given this labelrv-transformsInvolves transforms applied to random variablesInvolves transforms applied to random variables