/Generative_Deep_Learning_2nd_Edition

The official code repository for the second edition of the O'Reilly book Generative Deep Learning: Teaching Machines to Paint, Write, Compose and Play.

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

🦜 Generative Deep Learning - 2nd Edition Codebase

The official code repository for the second edition of the O'Reilly book Generative Deep Learning: Teaching Machines to Paint, Write, Compose and Play.

O'Reilly link

Amazon US link

📖 Book Chapters

Below is a outline of the book chapters:

Part I: Introduction to Generative Deep Learning

  1. Generative Modeling
  2. Deep Learning

Part II: Methods

  1. Variational Autoencoders
  2. Generative Adversarial Networks
  3. Autoregressive Models
  4. Normalizing Flows
  5. Energy-Based Models
  6. Diffusion Models

Part III: Applications

  1. Transformers
  2. Advanced GANs
  3. Music Generation
  4. World Models
  5. Multimodal Models
  6. Conclusion

🌟 Star History

🚀 Getting Started

Kaggle API

To download some of the datasets for the book, you will need a Kaggle account and an API token. To use the Kaggle API:

  1. Sign up for a Kaggle account.
  2. Go to the 'Account' tab of your user profile
  3. Select 'Create API Token'. This will trigger the download of kaggle.json, a file containing your API credentials.

The .env file

Create a file called .env in the root directory, containing the following values (replacing the Kaggle username and API key with the values from the JSON):

JUPYTER_PORT=8888
TENSORBOARD_PORT=6006
KAGGLE_USERNAME=<your_kaggle_username>
KAGGLE_KEY=<your_kaggle_key>

Get set up with Docker

This codebase is designed to be run with Docker.

If you've never used Docker before, don't worry! I have included a guide to Docker in the Docker README file in this repository. This includes a full run through of why Docker is awesome and a brief guide to the Dockerfile and docker-compose.yml for this project.

Building the Docker image

If you do not have a GPU, run the following command:

docker compose build

If you do have a GPU that you wish to use, run the following command:

docker compose -f docker-compose.gpu.yml build

Running the container

If you do not have a GPU, run the following command:

docker compose up

If you do have a GPU that you wish to use, run the following command:

docker compose -f docker-compose.gpu.yml up

Jupyter will be available in your local browser, on the port specified in your env file - for example

http://localhost:8888

The notebooks that accompany the book are available in the /notebooks folder, organized by chapter and example.

🏞️ Downloading data

The codebase comes with an in-built data downloader helper script.

Run the data downloader as follows (from outside the container), choosing one of the named datasets below:

bash scripts/download.sh [faces, bricks, recipes, flowers, wines, cellosuites, chorales]

📈 Tensorboard

Tensorboard is really useful for monitoring experiments and seeing how your model training is progressing.

To launch Tensorboard, run the following script (from outside the container):

  • <CHAPTER> - the required chapter (e.g. 03_vae)
  • <EXAMPLE> - the required example (e.g. 02_vae_fashion)
bash scripts/tensorboard.sh <CHAPTER> <EXAMPLE>

Tensorboard will be available in your local browser on the port specified in your .env file - for example:

http://localhost:6006

☁️ Using a cloud virtual machine

To set up a virtual machine with GPU in Google Cloud Platform, follow the instructions in the Google Cloud README file in this repository.

📦 Other resources

Some of the examples in this book are adapted from the excellent open source implementations that are available through the Keras website. I highly recommend you check out this resource as new models and examples are constantly being added.