How I Plan On Learning Deep Learning

Learning any technology can be tricky. Especially if it’s your first one. Luckily, it’s not for me. I do already have some programming experience.

I have some experience with Java and Kotlin. I wrote some Android apps. Android is not really for me. I do not like anything that requires you to do some front end design. I suck at design. I couldn’t design anything if my life depended on it. If  I were to go down the path of a web designer or a front end developer, I would go hungry. Even if you’re doing the kind of front end development which is on the more technical end of the spectrum (like messing with Web Assembly or some Reack DOM manipulation), you would still have to be able to do some design.

Why Deep Learning?

Deep learning is the closest computer science can currently get to mathematics. I do love maths, but doing pure maths is boring. Maths is theoretical, and you don’t feel like you’re making any real contribution to the world.

Software development is a very different story. I know that deep learning differs from regular software development, as when you’re working on a regular Android app, you’re making a product which goes directly into the customer’s hands. Whereas with deep learning you’re creating something which will be the backbone of a product. Most likely, it will be on a server and not on the customer’s device.

Using deep learning you can help reduce some grunt work which slows you down in your day to day chores. One very important segment of machine/depp learning products is the self driving car.

Just think how much time you could save if you didn’t have to pay attention on your daily commute.

And it seems to be very fun. I’d love to go head first into game bots, and I will as soon as I get the gist of the basics of deep learning.

Learning Python

Python is a very different language from Java or Kotlin. Just the way you think about a simple little program is quite different,

The first thing that you notice when you notice with Python code, if you come from a Java or C background, is that Python does not use curly brackets or semicolons.

I got used to the no semicolons thing with Kotlin, as they are optional in Kotlin, and I think it is an improvement, but no curly brackets is a little bit strange.

For me, the biggest thing that I needed to get used to is the implicit variable and function declaration. While Kotlin is a little bit more “free” in that way than Java is, and it is one of the selling points of Kotlin, it still did require a lot more typing that Python does.

I believe that the best way of learning a programming language is by doing.

Like John Sonmez said: “I need to learn x in order to do y.”

It is a huge waste of time going through a reference book cover to cover in order to learn a programming language.  The mindset of “I will learn this just in case if I need it someday” is going to slow you down immensely. If you already know any programming language, it should take you five minutes tops, to learn the bare basics of a new language.

Learn how to declare variables, functions and classes, how to import libraries, and learn a little bit about the data structures of the language (a little bit about arrays and things like that).

Development enviroment

I think that the biggest pain in the ass when learning a new programming language, is setting up the development environment.

Downloading a compiler, working with environment variables, all of it is a HUGE pain in the ass.

Python has some issues with Windows. If you didn’t know, Python comes on board with MacOS and Linux but not with Windows.

I had some trouble with installing libraries, especially numpy and scipy. I looked around and found this program called Anaconda. It deals with importing all of the most common scientific Python libraries like the previously mentioned numpy. It also comes with some extra features like an IDE called Spider, but I didn’t really like it, and Jupyter, a web notebook.

As much as I can see, a lot of Python developers use a barebones text editor and a command prompt. The most popular text editors are Sublime text and Atom, but I like Visual Code the best out of all the text editors.

I still prefer using a real IDE. Never liked using a barebones text editor with Java either, I always used IntelliJ IDEA, unless I was working on an Android app, in which case I would use Android Studio which is basically IntelliJ with a lot of plugins created to make Android app development easier.

For Python, I decided to use Pycharm, which was created by the guys at NetBeans. The same guys who created IntelliJ IDEA. I really like it. I makes Python development a lot easier. Probably a big reason as to why it is like that is that I’m used to IntelliJ and they are are very similar.

Deep learning

My biggest source of both resources for learning deep learning and actually learning deep learning is Siraj Raval. If you don’t already know about him, he is a YouTuber who makes a lot of videos on deep/machine learning and data science. He is also the author of the Udacity Nanodegree on deep learning.

Basically, he’s a badass.

Also a really big resource is the  Deep Learning book by Ian Goodfellow, which is a comprehensive resource for learning deep learning. It teaches you both the mathematical aspect of it, and how to convert it to code.