CS 677: Deep learning
Spring 2019

Instructor: Usman Roshan
Office: GITC 4214B
Ph: 973-596-2872
Office hours: TW: 2 to 5
TA: TBA
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
01/23/2019
Introduction
Basic Unix command sheet
Instructions for AFS login

Basic machine learning background with Python scikit-learn

Datasets
Introduction to GPU computing
01/28/2019
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
01/30/2019
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
02/04/2019
Parallel Chi-square 2-df test
Assignment 1
OpenCL and OpenMP programming
02/06/2019
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
02/11/2019
Multi-layer perceptrons
Scikit-learn MLP code
Image classification 02/13/2019
Image classification code
Python Image Library
Convolutional kernels for images 02/18/2019
Convolutional kernels
Convolutional neural networks 02/20/2019
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 02/25/2019
Convolution and single layer neural networks objective and optimization
Back propagation for single layer network with numpy 02/27/2019
Assignment 3
Online lecture for backpropagation weight updates 03/02/2019
NJIT closed due to weather 03/04/2019
Back propagation for single layer network with numpy, stochastic gradient descent 03/06/2019
Optimization in neural networks
Assignment 4
Back propagation for convolutional network with one convolutional layer followed by global average pooling 03/11/2019
Assignment 5
Introduction to Keras 03/13/2019
Spring Break 03/18/2019
Spring Break 03/20/2019
Spring Break lecture 03/22/2019
Keras and mid-term review 03/25/2019
Mid-term review sheet
Assignment 6

03/27/2019
Mid-term exam
Convolutional neural networks in Keras: convolutional blocks and layering
04/01/2019
Image classification code v2
Convolutional neural networks in Keras: normalization types and their effect
04/03/2019
Batch normalization
Batch normalization paper
Group normalization paper
How does batch normalization help optimization
Convolutional neural networks: gradient descent optimization. Large-scale image classification 04/08/2019
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 04/10/2019
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
04/15/2019
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 04/17/2019
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 04/22/2019
An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling
Image classification on Kaggle datasets, self-designed networks, self-supervised learning 04/24/2019 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
Image retrieval, U-networks 04/29/2019
U-Net: Convolutional Networks for Biomedical Image Segmentation
GitHub UNet in Keras

Image retrieval 05/01/2019
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 05/06/2019 Final exam review sheet