• Stars
    star
    909
  • Rank 48,483 (Top 1.0 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created almost 6 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tutorials on how to implement a few key architectures for image classification using PyTorch and TorchVision.

PyTorch Image Classification

This repo contains tutorials covering image classification using PyTorch 1.7, torchvision 0.8, matplotlib 3.3 and scikit-learn 0.24, with Python 3.8.

We'll start by implementing a multilayer perceptron (MLP) and then move on to architectures using convolutional neural networks (CNNs). Specifically, we'll implement LeNet, AlexNet, VGG and ResNet.

If you find any mistakes or disagree with any of the explanations, please do not hesitate to submit an issue. I welcome any feedback, positive or negative!

Getting Started

To install PyTorch, see installation instructions on the PyTorch website.

The instructions to install PyTorch should also detail how to install torchvision but can also be installed via:

pip install torchvision

Tutorials

  • 1 - Multilayer Perceptron Open In Colab

    This tutorial provides an introduction to PyTorch and TorchVision. We'll learn how to: load datasets, augment data, define a multilayer perceptron (MLP), train a model, view the outputs of our model, visualize the model's representations, and view the weights of the model. The experiments will be carried out on the MNIST dataset - a set of 28x28 handwritten grayscale digits.

  • 2 - LeNet Open In Colab

    In this tutorial we'll implement the classic LeNet architecture. We'll look into convolutional neural networks and how convolutional layers and subsampling (aka pooling) layers work.

  • 3 - AlexNet Open In Colab

    In this tutorial we will implement AlexNet, the convolutional neural network architecture that helped start the current interest in deep learning. We will move on to the CIFAR10 dataset - 32x32 color images in ten classes. We show: how to define architectures using nn.Sequential, how to initialize the parameters of your neural network, and how to use the learning rate finder to determine a good initial learning rate.

  • 4 - VGG Open In Colab

    This tutorial will cover implementing the VGG model. However, instead of training the model from scratch we will instead load a VGG model pre-trained on the ImageNet dataset and show how to perform transfer learning to adapt its weights to the CIFAR10 dataset using a technique called discriminative fine-tuning. We'll also explain how adaptive pooling layers and batch normalization works.

  • 5 - ResNet Open In Colab

    In this tutorial we will be implementing the ResNet model. We'll show how to load your own dataset, using the CUB200 dataset as an example, and also how to use learning rate schedulers which dynamically alter the learning rate of your model whilst training. Specifially, we'll use the one cycle policy introduced in this paper and is now starting to be commonly used for training computer vision models.

References

Here are some things I looked at while making these tutorials. Some of it may be out of date.

More Repositories

1

pytorch-seq2seq

Tutorials on implementing a few sequence-to-sequence (seq2seq) models with PyTorch and TorchText.
Jupyter Notebook
5,139
star
2

pytorch-sentiment-analysis

Tutorials on getting started with PyTorch and TorchText for sentiment analysis.
Jupyter Notebook
4,213
star
3

pytorch-rl

Tutorials for reinforcement learning in PyTorch and Gym by implementing a few of the popular algorithms. [IN PROGRESS]
Jupyter Notebook
251
star
4

pytorch-pos-tagging

A tutorial on how to implement models for part-of-speech tagging using PyTorch and TorchText.
Jupyter Notebook
176
star
5

a-tour-of-pytorch-optimizers

A tour of different optimization algorithms in PyTorch.
Jupyter Notebook
77
star
6

machine-learning-courses

A collection of machine learning courses.
36
star
7

code2vec

A PyTorch implementation of `code2vec: Learning Distributed Representations of Code` (Alon et al., 2018)
Python
33
star
8

pytorch-generative-models

[IN PROGRESS] An introduction to generative adversarial networks (GANs) and variational autoencoders (VAEs) in PyTorch, by implementing a few key architectures.
Jupyter Notebook
29
star
9

pytorch-nli

A tutorial on how to implement models for natural language inference using PyTorch and TorchText. [IN PROGRESS]
Jupyter Notebook
25
star
10

pytorch-language-modeling

Jupyter Notebook
13
star
11

extreme-summarization-of-source-code

Implementation of 'A Convolutional Attention Network for Extreme Summarization of Source Code' in PyTorch using TorchText
Python
13
star
12

pytorch-text-classification

Jupyter Notebook
13
star
13

notes

Python
12
star
14

gradient-descent

Let's learn gradient descent by using linear regression, logistic regression and neural networks!
Jupyter Notebook
11
star
15

pytorch-neural-style-transfer

Python
11
star
16

pytorch-for-code

Using PyTorch to apply machine learning techniques to source code.
Python
10
star
17

pytorch-transfer-learning

Python
9
star
18

pytorch-practice

Jupyter Notebook
8
star
19

bag-of-tricks-for-efficient-text-classification

Implementation of 'Bag of Tricks for Efficient Text Classification' in PyTorch using TorchText
Python
8
star
20

pytorch-dqn

An implementation of various flavours of deep Q-learning (DQN) in PyTorch.
Jupyter Notebook
7
star
21

recurrent-attention-model

Python
7
star
22

paper-notes

n'th attempt at keeping note of papers I have read
6
star
23

lexisearch

Use semantic similarity models to query transcriptions from the Lex Fridman Podcast.
Python
6
star
24

CodeSearchNet

Python
4
star
25

relation-networks

Implementation of the bAbi task from A simple neural network module for relational reasoning in PyTorch using TorchText.
Python
3
star
26

variational-autoencoders

Jupyter Notebook
3
star
27

snli

https://nlp.stanford.edu/projects/snli/
Python
3
star
28

go-practice

Go
2
star
29

Glucoduino

Project to read data from glucometers using the Arduino platform
C++
2
star
30

bentrevett.github.io

My personal website to act as a portfolio
HTML
2
star
31

character-aware-neural-language-models

Implementation of 'Character-Aware Neural Language Models' in PyTorch using TorchText
Python
2
star
32

attributed-document-qa

Python
2
star
33

wordle-terminal

Wordle in the terminal.
Python
1
star
34

art

Markov chain to generate "art"
Python
1
star
35

sorting-algorithms

Implementation of sorting algorithms, with visualizations.
1
star
36

py-algorithms

Implementation of various algorithms in Python 3.
Jupyter Notebook
1
star
37

keepnote

Google Chrome note taking extension
JavaScript
1
star
38

Glucoduino-Classic-Bluetooth-Application

Android application for glucoduino project using standard Bluetooth
Java
1
star
39

bentrevett

1
star
40

brainfuck-python

A brainfuck interpreter in Python 3.
Brainfuck
1
star
41

numberworld

A toy environment for task-oriented language grounding.
Python
1
star
42

Glucoduino-CSR-Chip

Code for the CSR uEnergy SDK for the glucoduino project
C
1
star