## Neural Networks and Deep Learning in C/C++ for NVidia Jetson TX

Duration: 5 Days

### Intended Audience

This course is for experienced C/C++ programmers who also have some familiarity with CUDA who are planning to develop applications involving the use of Neural Network based machine learning techniques, and to deploy trained neural networks implemented using CUDA on the NVidia Jetson TX.

### Course Overview

The course covers the most important aspects of the machine learning using Neural Networks and also covers the use of Tensor Flow and Torch - running on both ARM Cortex 64 bit cores and CUDA implementations running on NVidia GPUs. The course will introduce the NVidia CUDA Deep Neural Network library (cuDNN) and the NVidia DIGITS Deep Learning System. The course will cover the major types of Neural Network training paradigms both supervised and unsupervised.

### Course Contents

- Neurons, Neural layers, Activation functions
- Neural Networks
- Learning abilities of Neural Networks

- Supervised learning and multi-layer perceptrons
- Learning in multi-layer perceptrons
- Limitations of multi-layer perceptronsv

- Linear prediction
- Maximum likelihood
- Regularisers
- Basis functions
- Cross validators
- Optimisation
- Logistic regression

- Sigmoid neurons
- Input layer + Hidden layer + Output layer architecture
- Backpropagation and layer design of neural networks
- Supervised vs. Unsupervised Learning
- Introduction to Restricted Boltzmann Machines

- Survey of open source C/C++ Neural Network Libraries
- Implementing Neural Networks using Torch - LuaJIT and C
- Introduction to Google's Tensor Flow
- Practical introduction to implementing Neural Networks with NVidia cuNN and Digits

- Restricted Boltzmann Machines
- Supervised Feedforward Networks
- Deep learning with Torch
- Convolutional neural networks
- Max-margin learning and siamese networks
- Recurrent neural networks and LSTM (Long Short Term Memory)
- Variational autoencoders
- Torch and Tensor Flow using CUDA NVidia Libraries