Live data from Hacker News

Ask HN: Whats the best way to learn C++ for Deep learning?

news.ycombinator.com

11–20 of 31 posts

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#11
Just like if you were going to learn Python for Deep Learning, you're going to need 3 things:

1. Understanding of Deep Learning

2. General familiarity with the language

3. Understanding of packages/tools that will help you accomplish your goals. If this were python we'd be talking Numpy/TensorFlow/PyTorch/Keras/etc.

We're talking C++, I'm guessing you'll want to work with less abstraction than TF and the like, so BLAS, LAPACK, and maybe the whole CUDA family (CUDA, cuBLAS, cuDNN, etc).

Otherwise, TensorFlow, Caffe, CNTK, and other popular deep learning frameworks are available for C++, even though they might be better known and more heavily used in other languages.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#12

Might be 3 different skills here: 1) learn c++ 2) learn deep learning 3) learn c++ with deep learning: much easier once you have done 1) and 2)

I agree with this, but I would offer that #3 is more an integration of #1 and #2 rather than a "learn", as your last sentence points out with "once you have done 1) and 2)".

So I believe you should more strongly recommend 1) and 2) and include what a later poster added about various frameworks: "BLAS, LAPACK, and maybe the whole CUDA family (CUDA, cuBLAS, cuDNN, etc)", see @madenine.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#13
post #8

Might be 3 different skills here: 1) learn c++ 2) learn deep learning 3) learn c++ with deep learning: much easier once you have done 1) and 2)

I am familiar with Python and learned deep learning that way. Now would like to learn C++...

Then I would highly recommend Peter's book: https://www.amazon.com/Discovering-Modern-Scientists-Program...

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#14

I'm not sure how C++ for DL is different from regular C++ so take my advice with a grain of salt. I took a class under Bjarne Stroustrup and he highly recommended Tour of C++ [0] as the best way to learn modern C++ for someone who already has some programming experience. That and of course, Effective C++[1] by Scott Meyers. [0] - https://www.amazon.com/Tour-C-Depth/dp/0321958314 [1] - https://www.amazon.com/Effective…

I'd agree with the shout out for Tour of C++ as a good first book. Unlike most C++ intros, it's concise (192 pages) and up-to-date enough to exemplify C++'s standard forms (esp. 98 and 03). If you plan to develop in C++ you'll want other books with more examples and reference, but these will shift the focus more onto trees than forest (at ~1000 ppg).

Accelerated C++ by Koenig and Moo is another nice short overview of C++, but assumes more familiarity with C and OOP principles.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#15

I'm not sure how C++ for DL is different from regular C++ so take my advice with a grain of salt. I took a class under Bjarne Stroustrup and he highly recommended Tour of C++ [0] as the best way to learn modern C++ for someone who already has some programming experience. That and of course, Effective C++[1] by Scott Meyers. [0] - https://www.amazon.com/Tour-C-Depth/dp/0321958314 [1] - https://www.amazon.com/Effective…

These days, you want Effective Modern C++. It's a lot newer and goes over recent features.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#16
post #5
post #3

I think python is generally used for AI and data science stuff, so you'd probably be better off learning that. That said, I think one of the best ways to learn how to do something is dive right into it. I'm currently in the process of writing a deep learning library in C: https://github.com/siekmanj/sieknet So if you're dead set on C++, I'd say the best way is to try to build something cool right off the bat.

I just checked out your github repo and you've got a really cool project going there. What made you decide to start writing it?

Thanks! Mostly it was out of a desire to learn more about the actual algorithms behind AI, and trying to figure out if it's a field I might enjoy working in. I really enjoy building things from the ground up, and understanding how each part works.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#17
With 1.0, PyTorch now has an official legit C++ frontend: https://pytorch.org/cppdocs/frontend.html

PyTorch was apparently used in ~43% of the ICLR papers (a big prestigious deep learning conference) (https://www.reddit.com/r/MachineLearning/comments/9kys38/r_f...) and it's market share is growing at an incredible pace. I would expect it to beat Tensorflow in popularity at least for research very soon.

That's definitely where I would start if I absolutely had to do deep learning in C++. Otherwise I would do Python, which is likely used by 95% + of the research field.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#18
I guess for me, having been using c++ as my preferred language for 25 years I just now read api's. When new C++ features are added I get to know then by practicing using them in small programs then into production code.

Stroustrup and Meyers are the two most well known names. I buy all their books and I read them and practice all exercises and problems if the book has them.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#19
Besides the already-mentioned pytorch and tensorflow bindings, http://dlib.net/ is an option if C++ is really a hard requirement. It is opinionated and incomplete, basically being a one-man-show, but it has some weird-but-cool ideas like each neural network topology having its own template type.

Re: Ask HN: Whats the best way to learn C++ for Deep learning?

#20
What is your reason for learning "C++ for deep learning"?

This will kind of define how to go about doing it.

I can think of a few different reasons you might want to do this:

* You DL code in another framework is slow, and you have some custom C++ you want to write to speed it up. For this, you probably want to learn both high performance C++ and/or CUDA kernel development. You can probably avoid diving completely into C++, and just call a couple of optimized routines from python (and whatever other deep learning framework you are using in python). In this case, it might be worth looking into Tensor Comprehensions.

* You are taking someone elses DL algorithm and moving it to C++. In this case, you still don't need to be diving too much into C++, Ideally, you probably want to use something like ONNX and Caffe, and then call into them with some python wrapper. If you want the whole thing to be in C++, then you are still going to use something like ONNX and Caffe, but you will be writing mostly application code to support it.

* You want to help with the development of Pytorch, Tensorflow, Caffe or anther deep learning framework. In this case, you need to know CUDA kernel development, performant C++ idioms, and good C++ application development idioms.

These are pretty different flavors of C++, which makes it hard to give you a good answer.

Post reply on HN