Assignments of the Udacity MOOC Deep Learning
This repository contains the assignments I have done during the Udacity MOOC on Deep Learning with Google. The course is free but there is no support expect if you register to a nanodegree program. That's why I'm sharing my homeworks with as much comments as possible, you may find them useful.
Disclaimer: there is probably a code of conduct if you are enrolled in the nanodegree. Copying the code from the repository and pretending it to be sure would be bad. Even looking into it may be an infringement. Talk to your instructor.
The course is just great! You will use and develop neural networks for image recognition with convolution, natural language processing with embeddings and character based text generation with RNN/LTSM.
See below an outcome of one of the assignments, a t-SNE projection of word vectors, clustered by similarity.
Amazing, isn't it?
Since the datasets are loaded in memory, 4 GB of RAM are short to run the notebooks, 8 GB will be more comfortable. The instructions are given for Mac OS, but it works on Linux as well.
I recommend to install the Python bundle Anaconda. All the assignments have been done with Python 2.7, so download the installation script accordingly. You can then install Jupyter Notebook from conda
.
The next step is to install TensorFlow. At the time of writing, the latest release is r0.9, after several upgrades during the course. You can refer to the official documentation. Here is the list of commands:
$ conda create -n tensorflow python=2.7
$ source activate tensorflow
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/tensorflow-0.9.0-py2-none-any.whl
(tensorflow)$ pip install --upgrade --ignore-installed $TF_BINARY_URL
You can now grab the assignments from here to run my code or the stubs from the TensorFlow repository. All the other prerequisites (like numpy
) have to be installed on the fly.
From the repository root, start the Notebook server with jupyter notebook
.
This repository is mainly for my own purpose but I would be happy to share some thoughts with you. There are probably many ways to improve and tune the various neural nets.
To do so, just fork this repository.
- all the assignments come from Udacity and the TensorFlow repository
- the weird fonts dataset used for this image recognition is the notMNIST dataset from Yaroslav Bulatov (there are also a download mirrors for the large and small dataset)
- the final neural network of the assignment #4 is loosely inspired by the notorious LeNet-5, as described in the research paper "Gradient-Based Learning Applied to Document Recognition" by Y. LeCun, L. Bottou, Y. Bengio and P. Haffner