Lesson 15: Deep Learning Foundations to Stable Diffusion
Channel: Jeremy Howard
Date: 2023-04-04

(All lesson resources are available at http://course.fast.ai.) We start with a dive into convolutional autoencoders and explore the concept of convolutions. Convolutions help neural networks understand the structure of a problem, making it easier to solve. We learn how to apply a convolution to an image using a kernel and discuss techniques like im2col, padding, and stride. We also create a CNN from scratch using a sequential model and train it on the GPU.

We then attempt to build an autoencoder, but face issues with speed and accuracy. To address these issues, we introduce the concept of a `Learner`, which allows for faster experimentation and better understanding of the model's performance. We create a simple `Learner` and demonstrate its use with a multi-layer perceptron (MLP) model.

Finally, we discuss the importance of understanding Python concepts such as try-except blocks, decorators, getattr, and debugging to reduce cognitive load while learning the framework being built.

0:00:00 - Introduction
0:00:51 - What are convolutions?
0:06:52 - Visualizing convolutions
0:08:51 - Creating a convolution with MNIST
0:17:58 - Speeding up the matrix multiplication when calculating convolutions
0:22:27 - Pythorch’s F.unfold and F.conv2d
0:27:21 - Padding and Stride
0:31:03 - Creating the ConvNet
0:38:32 - Convolution Arithmetic. NCHW and NHWC
0:39:47 - Parameters in MLP vs CNN
0:42:27 - CNNs and image size
0:43:12 - Receptive fields
0:46:09 - Convolutions in Excel: conv-example.xlsx
0:56:04 - Autoencoders
1:00:00 - Speeding up fitting and improving accuracy
1:05:56 - Reminding what an auto-encoder is
1:15:52 - Creating a Learner
1:22:48 - Metric class
1:28:40 - Decorator with callbacks
1:32:45 - Python recap

Transcript thanks to fmussari. Timestamps thanks to Raymond-Wu and fmussari.