A lot of people have asked me how to get started with machine learning and/or deep learning. This is a list of some of the resources that I have either found useful myself or heard people who I trust rave about. This post is a summary of my github repository (which I expect to update more often than this post).
Classes
Reading
Machine Learning by Chris Bishop - Bishop’s book is a common introductory machine learning textbook. While I know some people who have learned machine learning simply by reading this text, I think that it can be a bit thick if it is your first introduction to machine learning, but is a wonderful reference once you have a better idea of how things fit together.
Machine Learning by Kevin Murphy - Murphy’s book is another common introductor machine learning textbook. This is also a wonderful reference but is a bit hard to read cover to cover.
Programming
Classes
If you want an intuition for what deep learning is and how it works, 3Blue1Brown has a series of YouTube videos that explain this really well!
If you want to build something that uses deep learning, Fast.ai is an online course that will get you using deep learning for practical projects within just a few lessons.
Reading
Neural Networks & Deep Learning - This online book explains a lot of hard concepts relatively intuitively.
Deep Learning Book - This book seems to have become one of the canonical books on deep learning. It starts with background knowledge and continues on through modern deep learning research. While some of the final section (on modern research) could get a bit confusing, I thought that section one did a marvelous job reviewing the probability, linear algebra, and other background knowledge that is most useful to get going in deep learning, and I thought section two was a really nice overview of some standard deep learning approaches.
Programming
Keras - Keras is a high-level neural networks API, written in Python. You can think of it as a wrapper around TensorFlow (and other lower level tools), Theano, etc. If you want to get something that uses deep learning up and running quickly, Keras is a great library to use. However, if you need to do a lot of customization to your architecture, there is a good chance that you will end up needing to use some of the lower level tools (i.e. TensorFlow) too.
TensorFlow- TensforFlow is a library for implementing deep learning developed by Google Brain. It takes some practice to get used to thinking about models in the TensorFlow way, but it is very robust and works well in large and distributed systems.
PyTorch - PyTorch is an alternative to TensorFlow. While there is some debate about which is better, the general consensus is that PyTorch is often easier to use for smaller projects, research projects, and other projected that do not need to be exceptionally robust and/or distributed.
Visualizations
Reading
Tools