Tuesday, November 14, 2017

Coursera: Convolutional Neural Networks Review


Convolutional Neural Networks is the fourth course in the new deep learning specialization offered by Coursera taught by Coursera founder Andrew Ng. The four week course builds on the concepts covered in courses 1 and 2, covering convolutional neural networks for image recognition and related tasks. It is highly recommended to complete the first two courses in the specialization before taking this course because it dives right into convnet structure so you need to understand vanilla neural nets to follow along. You'll also need to use TensorFlow for some of the programming assignments; the final homework assignment in the second course in the specialization provides an introduction to TensorFlow covering the basics you'll be expected to know for this course. You have to be a subscriber to submit assignments for a grade, but you can still open the programming assignment notebooks and work through everything even if you audit the course.


Convolutional Neural Networks doesn't waste any time getting started, covering the basics of convnets, including convolutions, filters, padding, striding, pooling and intuitions for why convnets work all in the first week. The first weeks homework assignments guide you through the process of building and applying a convnet. The second week discusses historical and state of the art neural net architectures including LeNet, AlexNet, VGG, ResNets and Inception Networks as well as practical tips for using convnets in practice such as open source code, transfer learning and data augmentation. Week 3 covers image-related tasks that go beyond basic classification, including object localization, object detection and the YOLO algorithm. Week 4 covers other tasks you can tackle with convnets such as face recognition and image style transfer.


Every week of the course has of roughly 1-2 hours of lecture content, followed by one or two programming assignments that each generally take at least a couple of hours to complete. The lecture style is identical to the previous courses in the specialization: each video consists of prepared slides augmented by text written by Andrew Ng in real time along with voice-overs explaining the slides and text. Each video also has a short intro and outro where Ng appears on screen and discusses what the video is about and key takeaways. The production quality of the lectures isn't anything special but the instruction itself is top notch. The course is pretty ambitions with the number of concepts it covers each week so even with Ng's excellent instruction you may find yourself having to rewatch some of the lectures to digest everything.


The programming assignments in Convolutional Neural Networks guide you through the process of implementing and applying lecture topics in code. The assignments are highly structured, providing code skeletons with all the functions, arguments and control flow necessary to complete them. You generally only have to fill in single lines of code performing key calculations to allow functions to produce the desired outputs. There is a lot of guidance for every line of code you have to write, so despite the complexity of the subject matter, the assignments are designed to keep you from getting stuck for too long. You do occasionally have to use deep clearing libraries like TensorFlow and Keras in which can be difficult since you aren't really given enough practice using them to have a solid understanding of how they work and interact. I also noticed some hiccups where code that passed all the tests in the notebooks were not accepted as correct by the course autograders.


Convolutional Neural Networks is a great first course on convnets that is very accessible given the subject matter. That said, it covers many different topics each week and often raises practical considerations and tips that more experienced practitioners may find useful. The programming assignments may be a bit too structured for some and they should probably give students more practice with TensorFlow and Keras, but overall the are well-made and very instructive.


I give Convolutional Neural Networks 4.5 out of 5 stars: Great.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.