Resource#

Textbook#

There is no required textbook for this course. We will make lecture slides and examples used in class available. Additional references are listed below.

Deep Learning#

  1. Deep learning by Ian Goodfellow, Yoshua Bengio, and Aaron Courville (theory and concepts; available online)

  2. Neural Networks and Deep Learning by Michael Nielsen (concepts and examples; online book)

  3. Deep Learning with Python by Francois Chollet (learning through examples; Keras)

Practical Deep Learning#

  1. Machine Learning Yearning by Andrew Ng (practical concepts; available online)

  2. Hands-On Machine Learning with Scikit-Learn and TensorFlow by Aurélien Géron (ML and Tensorflow)

  3. TensorFlow Deep Learning Cookbook by Antonio Gulli and Amita Kapoor (cookbook examples)

Machine Learning#

  1. A Course in Machine Learning by Hal Daume III (Introduction; available online)

  2. Machine Learning: A Probabilistic Perspective by Kevin Murphy (Extensive text)

Computational Platform#

Practical implementation of neural networks requires a computational platform which includes convenient libraries of deep learning elements and operations. When choosing a platform, aspects such as efficiency and scalability for various types of networks, efficient training, usage with various architectures such as GPU/ multiple CPU and seamless usage with cloud services should be taken into account. There are several platforms that support these requirements, such as TensorFlow, Pytorch, Keras, Caffe 2, ONNX, etc.

The material in this course is universal. Network types and algorithms which we will cover can be implemented on various platforms.

For consistency, we will use the TensorFlow (Links to an external site.) platform with Python throughout the course since it is the most fundamental end-end comprehensive platform. Indeed, many existing codes and examples are in TensorFlow. With a solid knowledge of TensorFlow, you will be able to quickly learn to work with other platforms when needed.

Follow the instructions in the Kaggle setup to work on each of the assignment. You can also use Google CoLab or Local Platform to work on the assignment and upload jupyter notebook to Kaggle for submission.

Useful manual and tutorial#

Manual#

  1. Numpy is the fundamental package for scientific computing in Python.

  2. Pandas is an open source, BSD-licensed library providing high-performance, easy-to-use data structures and data analysis tools for the Python programming language.

  3. Uproot is a library for reading (and soon, writing) ROOT files in pure Python and NumPy.

  4. h5py package is a Pythonic interface to the HDF5 binary data format.

  5. Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.