I have just completed the Deep Learning NanoDegree proposed by Udacity. I guess this is a great occasion to give you my feedback on this. I hope this will help you decide if you wish to register.
Who is this course for ?
This course is basically made for people that have no knowledge or experience with deep learning. Thus, this one is not a program for senior deep learning engineers. Though, the course will ask you to bring a minimum set of skills.
Regarding coding, you will need to be a fluent Python coder, and in particular, you will need to master the Numpy package (which is not that much of a surprise…). Implementations are done through Jupyter Notebooks, the projects coding is pretty straight-forward, but don’t expect to be reminded how to play with a numpy array for example. Regarding Python, the projects are not state of the art code oriented. Thus, you will not be asked to work on complexity estimation, or performance testing. If you can do the basic Python gymnastics, this will be fine.
Regarding the theorical part of the course, the program supposes that you have no knowledge about Deep Learning. Though, you will need to know enough about machine learning to understand how to train a model. In particular, you will be asked to feel comfortable with supervised learning concepts, building training, evaluation and test datasets, and the basics of classification principles (accuracy, loss error computation)
To make this clear, if you know enough in Python, and if you have a basic knowledge in machine learning, there is no reason why you couldn’t follow the course.
The course is very well structured, and the most famous neural network architectures are covered. The course starts with the classical connected layers neural network, and this part may be (to me) the most important, because this part covers all the deep learning theory that you’ll get familiar with and that will help you jump on the next sections. The principal notions are very well covered : fastforward processing, backpropagation processing, gradient descent, hyperparameters, loss error computation.
After this introduction, things start to get really interesting, with convolutional neural networks (CNNs) that will challenge you on computer vision projects. You will be taught what a convolutional layer is, how to build you convolutional kernels, measure the performance of your models, and put them to the next level thanks to transfer learning (that use pre-built models).
The third chapter deals with recurrent neural network, and will give you an idea of how to use deep learning to anticipate the future (for time series projects for instance). I must admit I found this chapter a bit less engaging. After working on computer vision projects, doing time series was a little bit less sexy…
Next chapter was about Generative Adversarial Networks (GANs), and was by far the most amazing and the most challenging to understand (for me). This chapter taught me how to use deep learning to build completely original faces, computed from a faces dataset.
With only 1 hour of training with a cloud GPU, I could achieve pretty realistic results. Indeed, some of the generated faces are a little crunchy, but a few of them gave pretty good results ! The great thing about this chapter is that you surely saw some applications on the Internet, and now you have a glimpse of how to do it.
The last chapter of the program is dedicated to deploying the model in production. This chapter (and its project) is shared with the Machine Learning Engineer NanoDegree that I have also completed a short time ago. You are more than welcome to see my review on this nanodegree, and read my comments on models deployment in production on AWS.
What to expect from this nanodegree ?
What is really cool about this program is that it focuses on implementing deep learning. I’ve read many books, and most of time I would kneel down in front of pages of equations, and linear algebra formulas. The program teaches the theory of course, but clearly emphasizes coding, training, and testing. Implementation is made with PyTorch, and the courses are written with a lot of Jupyter notebooks, annotated, reviewed by the instructors, and fully working. The projects are also 100% about implementation through Jupyter Notebooks. What is the most satisfying is that after completing the program you can say to yourself: not only have I learnt deep learning, but I’ve done some !
Downside: as the program covers all the subjects, they go deep enough to get you the required knowledge, but not enough to work on your own project in complete autonomy with enough skills to choose the greatest hyper-parameters fine-tuning strategy. This is very logical actually. Being a deep learning expert requires years of work, and the Udacity program is 3 months long.
Eventually, I can say that this course is definitely a good start. It will give you a wide picture of what you can do with deep learning, it will make you work with PyTorch and deploy your first models. This is (to me) the best way to get the motivation to get deeper, and develop some expertise in CNNs for instance. I’ve read many books, and I always stopped after the first chapters as I was getting lost. Thanks to this program, I gained some skills that will help me dive deeper and work on more challenging deep learning projects.
Should you follow this nanodegree ?
I think this nanodegree is definitely worth following, but it will require some investment on your side. There is much to learn, and depending on your technical level, you may need (like me) to complete the courses with blog posts and youtube videos (which also helped me a lot).
This kind of program can be seen as a specialization. Regarding the couple of months of investment it requires, whether or not this program is suitable for you also depends on whether or not you have a purpose through this. If you just want to know what deep learning is, you can find pretty relevant videos on Youtube that will explain you all. If you are thinking about shifting your career or growing some opportunities, I think this program is an excellent investment.
I hope this helped you get a better idea of the value you could get from this nanodegree.