CS 677: Deep learning
Summer 2019

Instructor: Usman Roshan
Office: GITC 4214B
Ph: 973-596-2872
Grader: Kalp Dalal, kdd32@njit.edu
Email: usman@njit.edu

Textbook: Not required
Grading: 40% programming assignments, 25% mid-term, 35% final exam
Course Overview: This course will cover deep learning and current topics in data science. We will begin with machine learning background and then move to CUDA and OpenCL languages for parallel programming on Graphics Processing Units (GPUs) followed by OpenMP for multi-core programming. We will then proceed to neural networks, machine learning for image recognition, convolutional filters for image recognition, convolutional neural networks, optimization algorithms to train such networks, adversarial attacks, and deep learning for text.

Course plan:

-->
Topic
Date
Notes
Basic machine learning and Python scikit-learn
Introduction
Basic Unix command sheet
Instructions for AFS login

Basic machine learning background with Python scikit-learn

Datasets
Introduction to GPU computing
GPU coding (also see Cuda by Example by Kandrot and Sanders)

Numpy tutorials
Official Numpy tutorial
External Numpy tutorial

CUDA in Python
Numba
CUDAJIT in Anaconda
PyCUDA (PyCUDA slides)
CUDA programming
Parallel chi-square 2-df test
Chi-square 2-df test in parallel on a GPU
Simulated GWAS
Class labels for above data
CUDA programming
Parallel Chi-square 2-df test
Assignment 1
OpenCL and OpenMP programming
CUDA to OpenCL slides
libOpenCL.so (NVIDIA library file for OpenCL code)
Chi2 opencl implementation
OpenCL files

CUDA to OpenMP slides
OpenMP reference
Chi2 openmp implementation
Assignment 2
Neural networks
Multi-layer perceptrons
Scikit-learn MLP code
Image classification Image classification code
Python Image Library
Convolutional kernels for images Convolutional kernels
Convolutional neural networks Convolutional neural network (Additional slides by Yunzhe Xue)
Convolution and single layer neural networks objective and optimization
Flower image classification with CNNs code
Convolutional neural networks Convolution and single layer neural networks objective and optimization
Back propagation for single layer network with numpy Assignment 3
Online lecture for backpropagation weight updates
Back propagation for single layer network with numpy, stochastic gradient descent Optimization in neural networks
Assignment 4
Back propagation for convolutional network with one convolutional layer followed by global average pooling Assignment 5
Introduction to Keras
Keras and mid-term review Mid-term review sheet
Assignment 6

07/11/2019
Mid-term exam
Convolutional neural networks in Keras: convolutional blocks and layering
Image classification code v2
Convolutional neural networks in Keras: normalization types and their effect
Batch normalization
Batch normalization paper
Group normalization paper
How does batch normalization help optimization
Convolutional neural networks: gradient descent optimization. Large-scale image classification Gradient descent optimization
An overview of gradient descent optimization algorithms
Curriculum learning

CIFAR 10
CIFAR 100
STL 10
Mini ImageNet
More on training convolutional neural networks On training deep networks
The Loss Surfaces of Multilayer Networks
Ant colony optimization for deep networks
Simulated Annealing Algorithm for Deep Learning
Convolutional neural networks in Keras: pertrained models and transfer learning
Convolutions and deconvolutions, temporal convolutional kernels
Common architectures: ResNet, DenseNet, VGG
A guide to convolution arithmetic for deep learning

Common architectures
Transfer learning by Yunzhe Xue
Pre-trained models in Keras
Continuation of above plus cross-entropy loss function vs. least squares Assignment 7
Mini ImageNet in original form. Data are 256x256 images spread across different directories
Multi-path networks, data augmentation, time-series and sequence networks An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
Image classification on Kaggle datasets, self-designed networks, self-supervised learning Assignment 8
Kaggle datasets:
(a) Fruits
(b) Flowers
(c) Chest X-rays

Exploring Randomly Wired Neural Networks for Image Recognition
Automatically Designing CNN Architectures Using Genetic Algorithm for Image Classification

UNSUPERVISED REPRESENTATION LEARNING BY PREDICTING IMAGE ROTATIONS
Unsupervised Visual Representation Learning by Context Prediction
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
Data augmentation with generative adversarial networks Data Augmentation Using GANs
Transferring GANs: generating images from limited data
Large Scale GAN Training for High Fidelity Natural Image Synthesis
U-networks U-Net: Convolutional Networks for Biomedical Image Segmentation
GitHub UNet in Keras

Image retrieval Deep Learning for Image Retrieval: What Works and What Doesn't
CNN Features off-the-shelf: an Astounding Baseline for Recognition
Deep Learning for Content-Based Image Retrieval: A Comprehensive Study
Adversarial attacks, final exam review Final exam review sheet
Deep learning with Pytorch Flower classification in Pytorch
Text data CNNs for text
Word2Vec for word representations
Liar Liar dataset
Basic spam filtering