Which tool is in greater demand on the job market?
Hello! Do you think it would make sense to say a few words about PyTorch which is more recent and, as some people say, better than TF, and easier to learn? Would be great to hear your perspective on which tool suits better for what types of ML problems? Which tool is in greater demand on the job market? Given your course is still under development, do you think it would be possible to add just 1 separate section on PyTorch + 1 practice example with PyTorch? That would make your course more attractive to more students, as we prefer to put on our CV more skills.
You can build a machine learning algorithm with NumPy, but creating a deep neural network is getting exponentially harder. NumPy is designed for (fast) computations, and not machine learning. It is used for machine learning together with a machine learning package.
Matplotlib is a plotting library, so once again, not a machine learning package. In fact, it was tailored to work with NumPy. PyTorch is similar to NumPy in the way that it manages
computations, but has a strong GPU support. Similarly to NumPy, it also has a C (the programming language) backend, so they are both much faster than native Python libraries. NumPy could be GPU accelerated (with some extra code), but it doesn't have this strong GPU support that PyTorch or TensorFlow do. Finally, PyTorch was specifically tailored for GPU functionality in Python.
TensorFlow, on the other hand, was written mainly in C++ and CUDA (NVIDIA's language for programming GPUs), and was not specifically created for Python. It provides functionalities in C, C++, Java, Go (Google's language), and there is community support for Haskell and Rust (from tensorflow site). So, with TF, you are not restricted by Python. Even if the syntax differs a bit across languages, the concepts are the same.
Now, PyTorch has deep neural networks functionalities and that is why it is often compared with TensorFlow, sklearn, etc. As you could get from the course, TensorFlow has a peculiar logic (with concepts like placeholders, sessions, etc.). So, for TensorFlow, you need to make that extra effort. Knowing NumPy, it is easier to switch to PyTorch than TensorFlow, that is why it is gaining popularity so fast.
As TensorFlow was used by Google for so long, it is very easy to deploy algorithms using it. So you can think about it as more product oriented. Logically, you want to be able to deploy the algorithms that you are creating (you can check out TensorFlow Serving for more on that).
PyTorch, on the other hand, is more recent, so it does not have the full range of capabilities of other packages. I am sure that this will change and they are on their way to catch up. However, TensorFlow has this module tf.contrib. That's code, contributed from the community, that will probably be embedded into the core TF. Point being, the TensorFlow community is stronger,
because TF is older. I don't know if PyTorch will catch up to the community of TF (that depends on the users and the adoption).
So, my verdict would be that TensorFlow has kind of stood the test of time (if you can use this expression for a framework that is not that old itself) and is still more widely adopted. It has more capabilities and a better scalability for larger projects (projects of the scale of Google). PyTorch is surely gaining momentum as it is easier to learn but doesn't have the same integration. It is very good for small projects that need to be done quite fast, but is not optimal for product deployment.
Regarding the CV. Essentially, if you want to work in the industry, it is probable that a company may have some customized framework. On your CV, you will be expected to have experience with a machine learning package. They won't expect you to have worked with all of them. In any case, it seems to me that going for "the easier to learn" package looks worse on a CV.