Assume I have a model `x = S * z`

, where both `S`

and `z`

are estimated using SVI. `S`

is a model parameter and `z`

is my latent variable following a normal distribution.

Now, I would like to get the most likely `z_i`

for an observation `x_i`

. How can I do that with internal Pyro functions?

```
def model(data):
s = pyro.param("s", torch.randn(G, K))
z0_loc = pyro.param("z0_loc", torch.zeros(K))
z0_scale = pyro.param("z0_scale", torch.eye(K, K), constraint=constraints.positive_definite)
z0 = pyro.sample("z0", dist.MultivariateNormal(z0_loc, z0_scale))
sigma0 = pyro.param("sigma0", torch.eye(G, G), constraint=constraints.positive_definite)
mean = s @ z0
with pyro.plate("data", len(data)):
pyro.sample("obs", dist.MultivariateNormal(mean, sigma0), obs=data.T)
guide = pyro.infer.autoguide.AutoNormal(model)
```