I have data in form of n dimensional points. I have to train generative model where i pick a class through multinoulli distribution. Then each dimension of actual point is generated by some distribution (normal, multinoulli etc). Also i don't know number of classes beforehand (i.e. latent variable model). I want to know if there is some python tool available for this or do I need to write EM for it myself.