# Generative Adversarial Networks and WaveNet https://www.quora.com/What-are-some-recent-and-potentially-upcoming-breakthroughs-in-deep-learning - Denton et al. “Deep Generative Image Models using a Laplacian Pyramid of Adversarial Networks” (NIPS 2015) : https://scholar.google.com/citations?citation_for_view=RJV6hA4AAAAJ%3A2osOgNQ5qMEC&hl=en&user=RJV6hA4AAAAJ&view_op=view_citation - Radford et al. “Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks” (ICLR 2015): https://scholar.google.com/citations?citation_for_view=36ofBJgAAAAJ%3AYsMSGLbcyi4C&hl=en&user=36ofBJgAAAAJ&view_op=view_citation - Mathieu et al. “Deep multi-scale video prediction beyond mean square error” : https://scholar.google.com/citations?citation_for_view=SSTIBK0AAAAJ%3AW7OEmFMy1HYC&hl=en&sortby=pubdate&user=SSTIBK0AAAAJ&view_op=view_citation - https://openai.com/ ## What is a GAN? The key intuition of GAN can be easily considered as analogous to art forgery, which is the process of creating works of art that are falsely credited to other, usually more famous, artists. ## Deep convolutional generative adversarial networks https://github.com/jacobgil/keras-dcgan ```python def generator_model(): model = Sequential() model.add(Dense(input_dim=100, output_dim=1024)) model.add(Activation('tanh')) model.add(Dense(128*7*7)) model.add(BatchNormalization()) model.add(Activation('tanh')) model.add(Reshape((128, 7, 7), input_shape=(128*7*7,))) model.add(UpSampling2D(size=(2, 2))) model.add(Convolution2D(64, 5, 5, border_mode='same')) model.add(Activation('tanh')) model.add(UpSampling2D(size=(2, 2))) model.add(Convolution2D(1, 5, 5, border_mode='same')) model.add(Activation('tanh')) return model ``` ```python def discriminator_model(): model = Sequential() model.add(Convolution2D(64, 5, 5, border_mode='same', input_shape=(1, 28, 28))) model.add(Activation('tanh')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Convolution2D(128, 5, 5)) model.add(Activation('tanh')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(1024)) model.add(Activation('tanh')) model.add(Dense(1)) model.add(Activation('sigmoid')) return model ```