Representing overlapping plates

Hello,

I’m trying to represent a model with overlapping plates similar to example 3.2 in https://arxiv.org/pdf/1902.03210.pdf. Could someone please let me know if this possible, and share a minimal working model if so? If it’s not possible, should I just unroll one of the two overlapping plates explicitly and then use a plate for the other one?

Also, the paper mentions that “we integrate our implementation into the Pyro probabilistic programming language”. Is this included in the current release, or is the intention to integrate the implementation before ICML?

Thank you!

I haven’t read the article but it seems that tutorial http://pyro.ai/examples/hmm.html references it. Is this what you’re looking for?

As for your first question, maybe this can help? Can I use Pyro to build a factor graph model?
If you model the factors as Pyro samples, then I guess you can put them at the intersection of two plates by using code similar to http://pyro.ai/examples/tensor_shapes.html#Declaring-independent-dims-with-plate

Thanks for the help!

For anyone else who stumbles across this, the following modification to the example code will broadcast the operation over x_axis and y_axis such that xy[i, j] = Normal(x[i] * y[j], 1).

with x_axis:
    x = pyro.sample("x", Normal(0, 1))
with y_axis:
    y = pyro.sample("y", Normal(0, 1))
with x_axis, y_axis:
    xy = pyro.sample("xy", Normal(x * y, 1))