Assignment #2 - Recurrent Neural Networks, Variational Autoencoders and Generative Adverserial Networks