Deep Learning Models
A collection of various deep learning architectures, models, and tips for TensorFlow and PyTorch in Jupyter Notebooks.
Traditional Machine Learning
Multilayer Perceptrons
Convolutional Neural Networks
Basic
Concepts
AlexNet
DenseNet
Fully Convolutional
LeNet
MobileNet
Network in Network
VGG
ResNet
Normalization Layers
-
BatchNorm before and after Activation for Network-in-Network CIFAR-10 Classifier
-
Filter Response Normalization for Network-in-Network CIFAR-10 Classifier
Metric Learning
Autoencoders
Fully-connected Autoencoders
Convolutional Autoencoders
-
Convolutional Autoencoder with Deconvolutions / Transposed Convolutions
-
Convolutional Autoencoder with Deconvolutions and Continuous Jaccard Distance
-
Convolutional Autoencoder with Deconvolutions (without pooling operations)
-
Convolutional Autoencoder with Nearest-neighbor Interpolation
-
Convolutional Autoencoder with Nearest-neighbor Interpolation -- Trained on CelebA
-
Convolutional Autoencoder with Nearest-neighbor Interpolation -- Trained on Quickdraw
Variational Autoencoders
Conditional Variational Autoencoders
-
Conditional Variational Autoencoder (with labels in reconstruction loss)
-
Conditional Variational Autoencoder (without labels in reconstruction loss)
-
Convolutional Conditional Variational Autoencoder (with labels in reconstruction loss)
-
Convolutional Conditional Variational Autoencoder (without labels in reconstruction loss)
Generative Adversarial Networks (GANs)
Graph Neural Networks (GNNs)
-
Most Basic Graph Neural Network with Gaussian Filter on MNIST
-
Basic Graph Neural Network with Spectral Graph Convolution on MNIST
Recurrent Neural Networks (RNNs)
Many-to-one: Sentiment Analysis / Classification
-
A simple single-layer RNN with packed sequences to ignore padding characters (IMDB)
-
RNN with LSTM cells (IMDB) and pre-trained GloVe word vectors
-
Bidirectional Multi-layer RNN with LSTM with Own Dataset in CSV Format (AG News)
Many-to-Many / Sequence-to-Sequence
Ordinal Regression
-
Ordinal Regression CNN -- Niu et al. 2016 w. ResNet34 on AFAD-Lite
-
Ordinal Regression CNN -- Beckham and Pal 2016 w. ResNet34 on AFAD-Lite
Tips and Tricks
Transfer Learning
Visualization and Interpretation
-
Vanilla Loss Gradient (wrt Inputs) Visualization (Based on a VGG16 Convolutional Neural Network for Kaggle's Cats and Dogs Images)
-
Guided Backpropagation (Based on a VGG16 Convolutional Neural Network for Kaggle's Cats and Dogs Images)
PyTorch Workflows and Mechanics
PyTorch Lightning Examples
-
MLP in Lightning with TensorBoard -- continue training the last model
-
MLP in Lightning with TensorBoard -- checkpointing best model
Custom Datasets
-
Using PyTorch Dataset Loading Utilities for Custom Datasets -- CSV files converted to HDF5
-
Using PyTorch Dataset Loading Utilities for Custom Datasets -- Face Images from CelebA
-
Using PyTorch Dataset Loading Utilities for Custom Datasets -- Drawings from Quickdraw
-
Using PyTorch Dataset Loading Utilities for Custom Datasets -- Drawings from the Street View House Number (SVHN) Dataset
-
Using PyTorch Dataset Loading Utilities for Custom Datasets -- Asian Face Dataset (AFAD)
-
Using PyTorch Dataset Loading Utilities for Custom Datasets -- Dating Historical Color Images
-
Using PyTorch Dataset Loading Utilities for Custom Datasets -- Fashion MNIST
Training and Preprocessing
Improving Memory Efficiency
Parallel Computing
-
Using Multiple GPUs with DataParallel -- VGG-16 Gender Classifier on CelebA
-
Distribute a Model Across Multiple GPUs with Pipeline Parallelism (VGG-16 Example)
Other
-
PyTorch with and without Deterministic Behavior -- Runtime Benchmark
-
Plotting Live Training Performance in Jupyter Notebooks with just Matplotlib