## How Do I Start Using Deep Learning?

Where you start depends on what you already know.

The prerequisites for really understanding deep learning are linear algebra, calculus and statistics, as well as programming and some machine learning. The prerequisites for applying it are just learning how to deploy a model.

In the case of Deeplearning4j, you should know Java well and be comfortable with tools like the IntelliJ IDE and the automated build tool Maven.

Below you’ll find a list of resources. The sections are roughly organized in the order they will be useful.

## Free Machine- and Deep-learning Courses Online

- Andrew Ng’s Machine-Learning Class on YouTube
- Geoff Hinton’s Neural Networks Class on YouTube
- Patrick Winston’s Introduction to Artificial Intelligence @MIT (For those interested in a survey of artificial intelligence.)
- Andrej Karpathy’s Convolutional Neural Networks Class at Stanford (For those interested in image recognition.)
- [email protected]: Machine Learning Crash Course: Part 1
- [email protected]: Machine Learning Crash Course: Part 2
- Gradient descent, how neural networks learn, Deep learning, part 2

## Math

The math involved with deep learning is basically linear algebra, calculus and probility, and if you have studied those at the undergraduate level, you will be able to understand most of the ideas and notation in deep-learning papers. If haven’t studied those in college, never fear. There are many free resources available (and some on this website).

- Calculus Made Easy, by Silvanus P. Thompson
- Seeing Theory: A Visual Introduction to Probability and Statistics
- Andrew Ng’s 6-Part Review of Linear Algebra
- Khan Academy’s Linear Algebra Course
- Linear Algebra for Machine Learning; Patrick van der Smagt
- CMU’s Linear Algebra Review
- Math for Machine Learning
- Immersive Linear Algebra
- Probability Cheatsheet
- The best linear algebra books
- Markov Chains, Visually Explained
- An Introduction to MCMC for Machine Learning
- Eigenvectors, Eigenvalues, PCA, Covariance and Entropy
- Markov Chain Monte Carlo (MCMC) & Machine Learning

## Programming

If you do not know how to program yet, you can start with Java, but you might find other languages easier. Python and Ruby resources can convey the basic ideas in a faster feedback loop. “Learn Python the Hard Way” and “Learn to Program (Ruby)” are two great places to start.

- Scratch: A Visual Programming Environment From MIT
- Learn to Program (Ruby)
- Grasshopper: A Mobile App to Learn Basic Coding (Javascript)
- Intro to the Command Line
- Additional command-line tutorial
- A Vim Tutorial and Primer (Vim is an editor accessible from the command line.)
- Intro to Computer Science (CS50 @Harvard edX)
- A Gentle Introduction to Machine Fundamentals
- Teaching C

If you want to jump into deep-learning from here without Java, we recommend Theano and the various Python frameworks built atop it, including Keras and Lasagne.

## Python

- Learn Python the Hard Way
- Google’s Python Class
- Udemy: Complete Python 3 Masterclass Journey
- MIT: Introduction to Computer Science and Python Programming
- David Beazley: Python Tutorials
- CS231n: Python Numpy Tutorial
- Pyret: A Python Learning Environment

## Java

Once you have programming basics down, tackle Java, the world’s most widely used programming language. Most large organizations in the world operate on huge Java code bases. (There will always be Java jobs.) The big data stack – Hadoop, Spark, Kafka, Lucene, Solr, Cassandra, Flink – have largely been written for Java’s compute environment, the JVM.

- Think Java: Interactive Web-based Dev Environment
- Learn Java The Hard Way
- Introduction to JShell
- JShell in 5 Minutes
- Java Resources
- Java Ranch: A Community for Java Beginners
- Intro to Programming in Java @Princeton
- Head First Java
- Java in a Nutshell
- Java Programming for Complete Beginners in 250 Steps

## Deeplearning4j

With that under your belt, we recommend you approach Deeplearning4j through its examples.

## Other Resources

Most of what we know about deep learning is contained in academic papers. You can find some of the major research groups here.

While individual courses have limits on what they can teach, the Internet does not. Most math and programming questions can be answered by Googling and searching sites like Stackoverflow and Math Stackexchange.