# Basics of Deep Learning

## Course description

This course presents practical details of deep learning architectures, in which we’ll attempt to demystify deep learning and kick-start you into using it in your own field of interest.

During this course, you will gain a better understanding of the basis of deep learning and get familiar with its applications. Indeed, we will show you how to set up, train, debug and visualize your own neural networks.

After following this course, you will be able to understand papers, blog posts and code available online, and adapt them to your own projects. This is why we do not use high-level neural networks APIs and focus on the PyTorch library.

## Pre-requisites

Mathematics: basics of linear algebra, probability, differential calculus and optimization Programming: basic proficiency Python

## Forum of the course

To have access to the solutions of the practicals, you need to sign in to the forum.

## Schedule

- Lesson 1 (April 7): Machine learning pipeline and course overview:
- Lesson 2 (April 14): PyTorch tensors and automatic differentiation
- video (part 1) PyTorch tensors
- video (part 2) Automatic differentiation
- notebook in colab Linear regression in PyTorch.
- backprop slide (used for the practical below)
- practicals in colab Coding backprop. solution (forum login required)

- Lesson 3 (April 21): Classification with deep learning
- video (part 1) Loss functions
- slides Loss functions
- notebook in colab An explanation of underfitting and overfitting.
- video (part 2) Optimization for deep leaning
- slides Optimization for deep leaning
- notebook and colab Code your optimizers. solution (forum login required)

- Lesson 4 (April 24): Convolutional neural networks
- video (part 1) writing a PyTorch module
- slides writing a PyTorch module
- video (part 2) Convolutional neural network
- notebook and colab Build your CNN from scratch. solution (forum login required)

- Lesson 5 (April 28): Embedding layers and dataloaders
- video (part1) Embedding layers and dataloaders
- slides Embedding layers and dataloaders
- video (part2) Collaborative filtering
- notebook and colab Collaborative filtering solution (forum login required)
- practicals and colab refactoring the code seen above for a larger dataset. solution (forum login required)

- Lesson 6 (May 5): Unsupervised learning: auto-encoders and generative adversarial networks
- video (part 1) Autoencoders
- slides Autoencoders
- practicals and colab Denoising Autoencoder solution (forum login required)
- video (part 2) Generative Adversarial Network (GAN)
- slides Generative Adversarial Network (GAN)
- practicals and colab conditional GAN and (simplified) InfoGAN solution (forum login required)

- Lesson 7 (May 12): Recurrent neural networks
- video (part 1) Introducing Recurrent neural networks
- slides Recurrent neural networks
- video (part 2) Learning balanced parentheses
- notebook and colab Learning balanced parentheses
- practicals and colab Predicting Engine Failure with RNN solution (forum login required)