Model and guide shapes disagree at site ***

Model and guide shapes disagree at site ‘z_2’: torch.Size([2, 2]) vs torch.Size([2])

Anyone has the clue, why the shapes disagree at some point?

Here is the z_t sample site in the model: z_loc here is a torch tensor with shape [2,5], 2 is the batch size and 5 means there are 5 possible values.

the z_loc in model and the one in guide are different.

z_t = pyro.sample("z_%d" % t, dist.Categorical(logits=z_loc))

and the one in the guide:

z_t = pyro.sample("z_%d" % t, dist.Categorical(logits=z_loc))

I printed out the samples sampled from the distribution, but I did not see the shape is different.

guide z_1 tensor([2, 4])
guide z_2 tensor([4, 0])
guide z_3 tensor([1, 2])

model z_1 tensor([2, 4])
model z_2 tensor([4, 0])
model z_3 tensor([1, 2])

I am investigating probably the problem is from my own distribution parameters, z_loc.

Update:
I found the problem might be the design of model, in my model, I have nested plates.

with pyro.plate(...)
    some code
    with pyro.plate(...)
   

I assigned the dim=-2 in the first plate and -1 for the second one.

Hi! May I ask what do you mean when you said ‘dim=-2’ in the first plate and -1 in the second?
I am having the same problem in my implementation, and I have only 1 plate in my model and 1 plate in my guide.

It would be very helpful if you can give more details on how you solved this issue.
Thanks!