Oh OK, I think I might have lead you to a wrong path 
In your case, you can use pm.Mixture out of the box:
nbr = 5
with pm.Model() as model:
w = pm.Dirichlet('w', a=np.array([0.0000001]*nbr)) # weight vector for the mixture
mu = pm.Exponential('mu', lam=1, shape=nbr)
sd = pm.Exponential('sd', lam=1, shape=nbr)
components = pm.Lognormal.dist(mu=mu, sd=sd, shape=nbr)
obs = pm.Mixture('y', w, components, observed=data)