# How Do I Start Using Deep Learning?

Where you start depends on what you already know.

The prerequisites for understanding and applying deep learning are linear algebra, calculus and statistics, as well as programming and some machine learning.

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 Coursera
- Geoff Hinton’s Neural Networks Class on Coursera
- 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

## Math

- 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, Explained
- An Introduction to MCMC for 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 convey the basic ideas in a faster feedback loop.

- Learn Java The Hard Way
- Learn Python the Hard Way
- Pyret: A Python Learning Environment
- Scratch: A Visual Programming Environment From MIT
- Learn to Program (Ruby)
- 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

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.

## Java

Once you have programming basics down, tackle Java, the world’s most widely used programming language, and the language of Hadoop.

- Learn Java The Hard Way
- Java Resources
- Java Ranch: A Community for Java Beginners
- Intro to Programming in Java @Princeton
- Head First Java
- Java in a Nutshell

## Deeplearning4j

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

Once you get those up and running, and you’ve understood the API, you’re ready for a full install.

## Other Resources

Most of what we know about deep learning is contained in academic papers.

We’ve linked to a number of them 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.

## DL4J Beginner’s Guides

- Introduction to Deep Neural Networks
- Regression & Neural Networks
- Word2vec: Extracting Relations From Raw Text With Neural Word Embeddings
- Restricted Boltzmann Machines: The Building Blocks of Deep-Belief Networks
- Recurrent Networks and Long Short-Term Memory Units
- Convolutional Networks for Image Processing
- Artificial Intelligence vs. Machine Learning vs. Deep Learning
- Comparing Open-Source Deep Learning Frameworks
- Eigenvectors, PCA, Covariance and Entropy