Materials for upcoming beginner-friendly PyTorch course (work in progress).

Overview

Learn PyTorch for Deep Learning (work in progress)

I'd like to learn PyTorch. So I'm going to use this repo to:

  1. Add what I've learned.
  2. Teach others in a beginner-friendly way.

Stay tuned to here for updates, course materials are being actively worked on.

Launch early-mid 2022.

Course materials/outline

  • Note: This is rough and subject to change.
  • Course focus: code, code, code, experiment, experiment, experiment
  • Teaching style: https://sive.rs/kimo
Section What does it cover? Exercises & Extra-curriculum Slides
00 - PyTorch Fundamentals Many fundamental PyTorch operations used for deep learning and neural networks. Go to exercises & extra-curriculum Go to slides
01 - PyTorch Workflow Provides an outline for approaching deep learning problems and building neural networks with PyTorch. Go to exercises & extra-curriculum Go to slides
02 - PyTorch Neural Network Classification Uses the PyTorch workflow from 01 to go through a neural network classification problem. Go to exercises & extra-curriculum Go to slides
03 - PyTorch Computer Vision Let's see how PyTorch can be used for computer vision problems using the same workflow from 01 & 02. Go to exercises & extra-curriculum Go to slides
04 - PyTorch Custom Datasets How do you load a custom dataset into PyTorch? Also we'll be laying the foundations in this notebook for our modular code (covered in 05). Go to exercises & extra-curriculum Go to slides
05 - PyTorch Going Modular PyTorch is designed to be modular, let's turn what we've created into a series of Python scripts (this is how you'll often find PyTorch code in the wild). Go to exercises & extra-curriculum Go to slides
Coming soon: 06 - PyTorch Transfer Learning Let's take a well performing pre-trained model and adjust it to one of our own problems. Go to exercises & extra-curriculum Go to slides
Coming soon: 07 - Milestone Project 1: PyTorch Experiment Tracking We've built a bunch of models... wouldn't it be good to track how they're all going? Go to exercises & extra-curriculum Go to slides
Coming soon: 08 - Milestone Project 2: PyTorch Paper Replicating PyTorch is the most popular deep learning framework for machine learning research, let's see why by replicating a machine learning paper. Go to exercises & extra-curriculum Go to slides
Coming soon: 09 - Milestone Project 3: Model deployment So you've built a working PyTorch model... how do you get it in the hands of others? Hint: deploy it to the internet. Go to exercises & extra-curriculum Go to slides

Old outline version (will update this if necessary)

  1. PyTorch fundamentals - ML is all about representing data as numbers (tensors) and manipulating those tensors so this module will cover PyTorch tensors.
  2. PyTorch workflow - You'll use different techniques for different problem types but the workflow remains much the same:
data -> build model -> fit model to data (training) -> evaluate model and make predictions (inference) -> save & load model

Module 1 will showcase an end-to-end PyTorch workflow that can be leveraged for other problems.

  1. PyTorch classification - Let's take the workflow we learned in module 1 and apply it to a common machine learning problem type: classification (deciding whether something is one thing or another).
  2. PyTorch computer vision - We'll get even more specific now and see how PyTorch can be used for computer vision problems though still using the same workflow from 1 & 2. We'll also start functionizing the code we've been writing, for example: def train(model, data, optimizer, loss_fn): ...
  3. PyTorch custom datasets - How do you load a custom dataset into PyTorch? Also we'll be laying the foundations in this notebook for our modular code (covered in 05).
  4. Going modular - PyTorch is designed to be modular, let's turn what we've created into a series of Python scripts (this is how you'll often find PyTorch code in the wild). For example:
code/
    data_setup.py <- sets up data
    model_builder.py <- builds the model ready to be used
    engine.py <- training/eval functions for the model
    train.py <- trains and saves the model
  1. PyTorch transfer learning - Let's improve upon the models we've built ourselves using transfer learning.
  2. PyTorch experiment tracking - We've built a bunch of models... wouldn't it be good to track how they're all going?
  3. PyTorch paper replicating - Let's see why PyTorch is the most popular deep learning framework for machine learning research by replicating a machine learning research paper with it.
  4. PyTorch model deployment - How do you get your PyTorch models in the hands of others?

Each notebook will teach a maximum of 3 big ideas.

Status

  • Working on: shooting videos for 05
  • Total video count: 162
  • Done skeleton code for: 00, 01, 02, 03, 04, 05, 06, 07
  • Done annotations (text) for: 00, 01, 02, 03, 04, 05
  • Done images for: 00, 01, 02, 03, 04, 05
  • Done keynotes for: 00, 01, 02, 03, 04, 05
  • Done exercises and solutions for: 00, 01, 02, 03, 04, 05
  • Done vidoes for: 00, 01, 02, 03, 04

TODO

See the project page for specifics - https://github.com/users/mrdbourke/projects/1

High-level overview of things to do:

  • How to use this repo (e.g. env setup, GPU/no GPU) - all notebooks should run fine in Colab and locally if needed.
  • Finish skeleton code for notebooks 00 - 07 โœ…
  • Write annotations for 00 - 07
  • Make images for 00 - 07
  • Make slides for 00 - 07
  • Record videos for 00 - 07

Log

Almost daily updates of what's happening.

  • 12 May 2022 - added exercises and solutions for 05
  • 11 May 2022 - clean up part 1 and part 2 notebooks for 05, make slides for 05, start on exercises and solutions for 05
  • 10 May 2022 - huuuuge updates to the 05 section, see the website, it looks pretty: https://www.learnpytorch.io/05_pytorch_going_modular/
  • 09 May 2022 - add a bunch of materials for 05, cleanup docs
  • 08 May 2022 - add a bunch of materials for 05
  • 06 May 2022 - continue making materials for 05
  • 05 May 2022 - update section 05 with headings/outline
  • 28 Apr 2022 - recorded 13 videos for 04, finished videos for 04, now to make materials for 05
  • 27 Apr 2022 - recorded 3 videos for 04
  • 26 Apr 2022 - recorded 10 videos for 04
  • 25 Apr 2022 - recorded 11 videos for 04
  • 24 Apr 2022 - prepared slides for 04
  • 23 Apr 2022 - recorded 6 videos for 03, finished videos for 03, now to 04
  • 22 Apr 2022 - recorded 5 videos for 03
  • 21 Apr 2022 - recorded 9 videos for 03
  • 20 Apr 2022 - recorded 3 videos for 03
  • 19 Apr 2022 - recorded 11 videos for 03
  • 18 Apr 2022 - finish exercises/solutions for 04, added live-coding walkthrough of 04 exercises/solutions on YouTube: https://youtu.be/vsFMF9wqWx0
  • 16 Apr 2022 - finish exercises/solutions for 03, added live-coding walkthrough of 03 exercises/solutions on YouTube: https://youtu.be/_PibmqpEyhA
  • 14 Apr 2022 - add final images/annotations for 04, begin on exercises/solutions for 03 & 04
  • 13 Apr 2022 - add more images/annotations for 04
  • 3 Apr 2022 - add more annotations for 04
  • 2 Apr 2022 - add more annotations for 04
  • 1 Apr 2022 - add more annotations for 04
  • 31 Mar 2022 - add more annotations for 04
  • 29 Mar 2022 - add more annotations for 04
  • 27 Mar 2022 - starting to add annotations for 04
  • 26 Mar 2022 - making dataset for 04
  • 25 Mar 2022 - make slides for 03
  • 24 Mar 2022 - fix error for 03 not working in docs (finally)
  • 23 Mar 2022 - add more images for 03
  • 22 Mar 2022 - add images for 03
  • 20 Mar 2022 - add more annotations for 03
  • 18 Mar 2022 - add more annotations for 03
  • 17 Mar 2022 - add more annotations for 03
  • 16 Mar 2022 - add more annotations for 03
  • 15 Mar 2022 - add more annotations for 03
  • 14 Mar 2022 - start adding annotations for notebook 03, see the work in progress here: https://www.learnpytorch.io/03_pytorch_computer_vision/
  • 12 Mar 2022 - recorded 12 videos for 02, finished section 02, now onto making materials for 03, 04, 05
  • 11 Mar 2022 - recorded 9 videos for 02
  • 10 Mar 2022 - recorded 10 videos for 02
  • 9 Mar 2022 - cleaning up slides/code for 02, getting ready for recording
  • 8 Mar 2022 - recorded 9 videos for section 01, finished section 01, now onto 02
  • 7 Mar 2022 - recorded 4 videos for section 01
  • 6 Mar 2022 - recorded 4 videos for section 01
  • 4 Mar 2022 - recorded 10 videos for section 01
  • 20 Feb 2022 - recorded 8 videos for section 00, finished section, now onto 01
  • 18 Feb 2022 - recorded 13 videos for section 00
  • 17 Feb 2022 - recorded 11 videos for section 00
  • 16 Feb 2022 - added setup guide
  • 12 Feb 2022 - tidy up README with table of course materials, finish images and slides for 01
  • 10 Feb 2022 - finished slides and images for 00, notebook is ready for publishing: https://www.learnpytorch.io/00_pytorch_fundamentals/
  • 01-07 Feb 2022 - add annotations for 02, finished, still need images, going to work on exercises/solutions today
  • 31 Jan 2022 - start adding annotations for 02
  • 28 Jan 2022 - add exercies and solutions for 01
  • 26 Jan 2022 - lots more annotations to 01, should be finished tomorrow, will do exercises + solutions then too
  • 24 Jan 2022 - add a bunch of annotations to 01
  • 21 Jan 2022 - start adding annotations for 01
  • 20 Jan 2022 - finish annotations for 00 (still need to add images), add exercises and solutions for 00
  • 19 Jan 2022 - add more annotations for 00
  • 18 Jan 2022 - add more annotations for 00
  • 17 Jan 2022 - back from holidays, adding more annotations to 00
  • 10 Dec 2021 - start adding annoations for 00
  • 9 Dec 2021 - Created a website for the course (learnpytorch.io) you'll see updates posted there as development continues
  • 8 Dec 2021 - Clean up notebook 07, starting to go back through code and add annotations
  • 26 Nov 2021 - Finish skeleton code for 07, added four different experiments, need to clean up and make more straightforward
  • 25 Nov 2021 - clean code for 06, add skeleton code for 07 (experiment tracking)
  • 24 Nov 2021 - Update 04, 05, 06 notebooks for easier digestion and learning, each section should cover a max of 3 big ideas, 05 is now dedicated to turning notebook code into modular code
  • 22 Nov 2021 - Update 04 train and test functions to make more straightforward
  • 19 Nov 2021 - Added 05 (transfer learning) notebook, update custom data loading code in 04
  • 18 Nov 2021 - Updated vision code for 03 and added custom dataset loading code in 04
  • 12 Nov 2021 - Added a bunch of skeleton code to notebook 04 for custom dataset loading, next is modelling with custom data
  • 10 Nov 2021 - researching best practice for custom datasets for 04
  • 9 Nov 2021 - Update 03 skeleton code to finish off building CNN model, onto 04 for loading custom datasets
  • 4 Nov 2021 - Add GPU code to 03 + train/test loops + helper_functions.py
  • 3 Nov 2021 - Add basic start for 03, going to finish by end of week
  • 29 Oct 2021 - Tidied up skeleton code for 02, still a few more things to clean/tidy, created 03
  • 28 Oct 2021 - Finished skeleton code for 02, going to clean/tidy tomorrow, 03 next week
  • 27 Oct 2021 - add a bunch of code for 02, going to finish tomorrow/by end of week
  • 26 Oct 2021 - update 00, 01, 02 with outline/code, skeleton code for 00 & 01 done, 02 next
  • 23, 24 Oct 2021 - update 00 and 01 notebooks with more outline/code
  • 20 Oct 2021 - add v0 outlines for 01 and 02, add rough outline of course to README, this course will focus on less but better
  • 19 Oct 2021 - Start repo ๐Ÿ”ฅ , add fundamentals notebook draft v0
Owner
Daniel Bourke
Machine Learning Engineer live on YouTube.
Daniel Bourke
Segmentation models with pretrained backbones. PyTorch.

Python library with Neural Networks for Image Segmentation based on PyTorch. The main features of this library are: High level API (just two lines to

Pavel Yakubovskiy 6.6k Jan 06, 2023
This is an official implementation for "DeciWatch: A Simple Baseline for 10x Efficient 2D and 3D Pose Estimation"

DeciWatch: A Simple Baseline for 10ร— Efficient 2D and 3D Pose Estimation This repo is the official implementation of "DeciWatch: A Simple Baseline for

117 Dec 24, 2022
Meta-meta-learning with evolution and plasticity

Evolve plastic networks to be able to automatically acquire novel cognitive (meta-learning) tasks

5 Jun 28, 2022
The lightweight PyTorch wrapper for high-performance AI research. Scale your models, not the boilerplate.

The lightweight PyTorch wrapper for high-performance AI research. Scale your models, not the boilerplate. Website โ€ข Key Features โ€ข How To Use โ€ข Docs โ€ข

Pytorch Lightning 21.1k Jan 08, 2023
Source code for 2021 ICCV paper "In-the-Wild Single Camera 3D Reconstruction Through Moving Water Surfaces"

In-the-Wild Single Camera 3D Reconstruction Through Moving Water Surfaces This is the PyTorch implementation for 2021 ICCV paper "In-the-Wild Single C

27 Dec 06, 2022
[ICCV 2021] Deep Hough Voting for Robust Global Registration

Deep Hough Voting for Robust Global Registration, ICCV, 2021 Project Page | Paper | Video Deep Hough Voting for Robust Global Registration Junha Lee1,

Junha Lee 10 Dec 02, 2022
The official homepage of the COCO-Stuff dataset.

The COCO-Stuff dataset Holger Caesar, Jasper Uijlings, Vittorio Ferrari Welcome to official homepage of the COCO-Stuff [1] dataset. COCO-Stuff augment

Holger Caesar 715 Dec 31, 2022
[Machine Learning Engineer Basic Guide] ๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech - Product Serving ์ž๋ฃŒ

Boostcamp-AI-Tech-Product-Serving ๋ถ€์ŠคํŠธ์บ ํ”„ AI Tech - Product Serving ์ž๋ฃŒ Repository ๊ตฌ์กฐ part1(MLOps ๊ฐœ๋ก , Model Serving, ๋จธ์‹ ๋Ÿฌ๋‹ ํ”„๋กœ์ ํŠธ ๋ผ์ดํ”„ ์‚ฌ์ดํด์€ ๋ณ„๋„์˜ ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฉฐ, part

Sung Yun Byeon 269 Dec 21, 2022
[ICML 2022] The official implementation of Graph Stochastic Attention (GSAT).

Graph Stochastic Attention (GSAT) The official implementation of GSAT for our paper: Interpretable and Generalizable Graph Learning via Stochastic Att

85 Nov 27, 2022
Plenoxels: Radiance Fields without Neural Networks

Plenoxels: Radiance Fields without Neural Networks Alex Yu*, Sara Fridovich-Keil*, Matthew Tancik, Qinhong Chen, Benjamin Recht, Angjoo Kanazawa UC Be

Sara Fridovich-Keil 81 Dec 25, 2022
Pyramid R-CNN: Towards Better Performance and Adaptability for 3D Object Detection

Pyramid R-CNN: Towards Better Performance and Adaptability for 3D Object Detection

61 Jan 07, 2023
Train robotic agents to learn pick and place with deep learning for vision-based manipulation in PyBullet.

Ravens is a collection of simulated tasks in PyBullet for learning vision-based robotic manipulation, with emphasis on pick and place. It features a Gym-like API with 10 tabletop rearrangement tasks,

Google Research 367 Jan 09, 2023
Implementation of Uniformer, a simple attention and 3d convolutional net that achieved SOTA in a number of video classification tasks

Uniformer - Pytorch Implementation of Uniformer, a simple attention and 3d convolutional net that achieved SOTA in a number of video classification ta

Phil Wang 90 Nov 24, 2022
A package to predict protein inter-residue geometries from sequence data

trRosetta This package is a part of trRosetta protein structure prediction protocol developed in: Improved protein structure prediction using predicte

Ivan Anishchenko 185 Jan 07, 2023
Official Pytorch implementation of "CLIPstyler:Image Style Transfer with a Single Text Condition"

CLIPstyler Official Pytorch implementation of "CLIPstyler:Image Style Transfer with a Single Text Condition" Environment Pytorch 1.7.1, Python 3.6 $ c

203 Dec 30, 2022
This project hosts the code for implementing the ISAL algorithm for object detection and image classification

Influence Selection for Active Learning (ISAL) This project hosts the code for implementing the ISAL algorithm for object detection and image classifi

25 Sep 11, 2022
A complete, self-contained example for training ImageNet at state-of-the-art speed with FFCV

ffcv ImageNet Training A minimal, single-file PyTorch ImageNet training script designed for hackability. Run train_imagenet.py to get... ...high accur

FFCV 92 Dec 31, 2022
FreeSOLO for unsupervised instance segmentation, CVPR 2022

FreeSOLO: Learning to Segment Objects without Annotations This project hosts the code for implementing the FreeSOLO algorithm for unsupervised instanc

NVIDIA Research Projects 253 Jan 02, 2023
Official code release for "Learned Spatial Representations for Few-shot Talking-Head Synthesis" ICCV 2021

Official code release for "Learned Spatial Representations for Few-shot Talking-Head Synthesis" ICCV 2021

Moustafa Meshry 16 Oct 05, 2022
A Collection of LiDAR-Camera-Calibration Papers, Toolboxes and Notes

A Collection of LiDAR-Camera-Calibration Papers, Toolboxes and Notes

443 Jan 06, 2023