# Introduction

<br />

[Video](https://www.youtube.com/watch?v=8Tvn67gO8DQ)

Generative adversarial networks (GANs) are an exciting recent innovation in
machine learning. GANs are *generative* models: they create new data instances
that resemble your training data. For example, GANs can create images that look
like photographs of human faces, even though the faces don't belong to any real
person. These images were created by a GAN:

![Image of four photorealistic faces created by a generative adversarial
network.](https://developers.google.com/static/machine-learning/gan/images/gan_faces.png)

**Figure 1: Images generated by a
[GAN created by NVIDIA](https://research.nvidia.com/sites/default/files/pubs/2017-10_Progressive-Growing-of/karras2018iclr-paper.pdf).**

GANs achieve this level of realism by pairing a generator, which learns to
produce the target output, with a discriminator, which learns to distinguish
true data from the output of the generator. The generator tries to fool the
discriminator, and the discriminator tries to keep from being fooled.

This course covers GAN basics, and also how to use the TF-GAN library to create
GANs.

> [!NOTE]
> **Course Learning Objectives**
>
> - Understand the difference between generative and discriminative models.
> - Identify problems that GANs can solve.
> - Understand the roles of the generator and discriminator in a GAN system.
> - Understand the advantages and disadvantages of common GAN loss functions.
> - Identify possible solutions to common problems with GAN training.
> - Use the TF GAN library to make a GAN.

## Prerequisites

This course assumes you have:

- Completed [Machine Learning Crash Course](https://developers.google.com/machine-learning/crash-course) either in-person or self-study.
- At least a little experience programming with [TensorFlow](https://tensorflow.org)