How to get what you want out of the course
Recommended Learning Path: 30 hours in 30 days
In this course, the process of building a neural network framework is divided into 28 coding exercises. For each one, I describe the goals, then encourage you to try coding it up on your own. After that I walk through the solution I wrote in a video, explaining each line and the motivation behind it.
All the code for the course, including the solutions to the coding exercises are in this GitHub repository. I recommend grabbing a copy of it for your local machine with
git clone [email protected]:brohrer/nn_framework.git
If this is the first excuse you've had to work with Git, I recommend taking a quick walk through one or two of these tutorials. It will absolutely be worth your time.
The code is organized into 29 different branches. The master branch has the final product. Individual branches contain the solutions to each exercise in the format "ex-##". For example, the solution to exercise 8 is in branch ex-08. To see only the new code associated with a given exercise, you can use the diff command at the command line. For example,
git diff ex-07 ex-08
will show the code changes introduced by exercise 8. These changes are what I'll be walking through in detail when I discuss my solution to each exercise. They are the between branch differences or "diff"s that you'll be typing out. You can create a separate directory for creating your own versions of these files and compare between yours and mine step-by-step as you go.
If you really want to juice the most understanding and intuition from the course material, try to write the solution to each exercise yourself before watching the walkthrough. This is hands-down the best way to get there. Some exercises might take you 5 minutes, some might take you an hour. Some might even require a short self-study tangent, like how to create a plot in Matplotlib or how to write a generator. But every minute of this struggle will be repaid handsomely in the depth of understanding it gives you.
The workflow will look like this:
- Checkout the branch with the solution to the previous exercise. For instance, if you want to work on exercise 15, you would execute the command line "git checkout ex-14"
- Write your own solution.
- Run and test it until you are satisfied.
- Watch the walkthough.
- Make changes to the code you wrote and re-run if you're so inclined.
- When you're ready to move on the next exercise, you can just abandon the changes you made and checkout the branch with the solution to your exercise. This gets you back to step 1. Repeat.
Quick Skim, 2-4 hours
If you are pressed for time, or would like to get a quick overview, feel free to just watch the walkthroughs. This is a great way to get exposure to the process or to preview the course.
Please keep in mind, there are a hundred good ways to complete any of the exercises. There's not one right answer. I can guarantee you, mine isn't even the best solution. If you feel comfortable deviating from my code, do it! The more you make it your own, the more you'll learn.
After completing the course you can go back and make changes, big and small. The code is written to be naturally extendable. As we work our way through, I'll call out places where you might want to go back make additions later. You can try out neural networks of different shapes and on different data sets. You could re-write the whole thing in R or Go or Julia. Best of all, you can use it to work on a larger problem that fascinates you or support a cause that you feel passion for. The sky is the limit here. You can take your understanding as deep as you want it to go.