Flexible and accurate inference and learning for deep generative models