This is fine. Coords and dims work in multiple dimensions:
coords = {'day':np.arange(7),
'city':['Berlin', 'London', 'Tokyo']
}
with pm.Model(coords=coords) as model:
mu = pm.Normal('mu', 0, 1)
# shape
#normals = pm.Normal('normals', mu, 1, shape=(7, 3))
# dims
normals = pm.Normal('normals', mu, 1, dims=('day', 'city'))
idata = pm.sample()
But I don’t see any instances of multidimensional parameter arrays in your model (though I may have missed it).
As for the shape error you’re getting, it’s not clear to me what is happening because many things have changed between the two models.