What is our primary use case?
The main purpose of TensorFlow is to develop neural networks for data science projects. For example, I had a project about a super-resolution GAN, which is a model that you give a low-resolution image, and it will complete the details for you. I used Keras and TensorFlow for this model and it was really easy to use. The time to implement was simply minimal in comparison to the time for testing, logic, and high-level implementation. That was the highlight of my academic project. For a client, I used TensorFlow and Keras to develop a predictive heat map for orders. He wanted to build a predictive model for a taxi company. They wanted to tell the drivers, "Okay, this area has more probability of having higher orders than another area." I used TensorFlow and Keras to develop a model to predict the areas which have a higher probability and built a heat map to show the drivers. That is actually the highlight of my industrial project. It was a client on Upwork.
How has it helped my organization?
For me, it's the simplicity of using the built-in layers. The load from generator method saves us a lot of time and memory in terms of development and the learning process of models, especially networks that have huge parameters. They will need a hundred terabytes of runs but with this method, which is amazing. All the methods of TensorFlow are consistent with each other. So it will save the developer a lot of time and actually, that reflects on the client as well. So the client would get a high-quality product with a minimal budget. This enables clients with limited budgets to actually hire developers that can develop high-quality models using TensorFlow.
What is most valuable?
The most valuable feature for TensorFlow is the ability to use CoLab. It's actually also using Torch, but in TensorFlow according to my experience, it's much, much easier to do than the integration with Google CoLab. It's pretty simple to use Google CoLab Pro and use TensorFlow models. It's not a feature, but the best thing about TensorFlow and Keras is that it is the most common in the world and they have huge communities. Whatever error you have, you can actually Google that error and you can get it done in five minutes. So that is, I think, really unique about TensorFlow. I never actually thought about developing a system like TensorFlow. It's so huge and it needs a lot of developers to maintain, but if I want to develop a sub-system that actually helps me to solve a task, I can do that in just two days to develop benchmark models in TensorFlow. If I had to develop this from scratch I would probably need 20 days to a month to develop it myself from scratch. It is also totally Open-Source and free. Open-source applications are not good usually. but TensorFlow actually changed my view about it and I thought, "Look, Oh my God. This is an open-source application and it's as good as it could be." I learned that TensorFlow, by sharing their own knowledge and their own platform with other developers, improved the lives of many people around the globe. If it was a licensed product, a lot of people, for example, in the Middle East or the third world countries, would not be able to help their own communities because of a substantial license fee they cannot afford. The biggest lesson I learned is to have an open-source platform that could impact the world and make it a better place. You get that with TensorFlow.
What needs improvement?
If I want to develop my own gradient descent, and I want to use the TensorFlow grading descent, but implement it in my own way, it can be difficult. However, if I want to change just one thing in the implementation of TensorFlow functions I have to copy everything that they wrote and change it manually if indeed it can be amended. This is really hard as it's written in C++ and has a lot of complications. But this feature, allowing you to write bespoke code to an implementation of TensorFlow would be really great. Another thing I think that TensorFlow would be much more optimized is to have better CPU versions. I know the problem with Python in general, it lets you only use one thread in the CPU. But even while using TensorFlow, it uses two threads. For example, if I have a high powered CPU, I cannot use it. For example with my laptop, I have a high-powered CPU and I'm using Ubuntu, but my GPU is not recognized. So I can use the CPU, but it's not really optimized for this purpose. Huge calculations require GPU's. I think that could be the second thing that could be optimized. I think TensorFlow 2 has huge improvements over TensorFlow 1. However, it would be really nice if we can actually somehow use the code written in TensorFlow 1, to incorporate it into TensorFlow 2. It generates a lot of errors and you have to change a lot of code and settings. What we can optimize is to actually have consistency between the versions. So TensorFlow 2 is actually a different product, to TensorFlow 1.
For how long have I used the solution?
I have been using TensorFlow for around one year and a half. I use it for projects. So it has been three years since I took a TensorFlow tutorial or course about TensorFlow. I started applying it in industrial projects and academic projects for one year and a half.
What do I think about the stability of the solution?
For TensorFlow 2, I think it's very stable. For that version. Stability is inconsistent between the versions of TensorFlow 1 and TensorFlow 2. I think from the TensorFlow functionality side, you don't really need any maintenance, but from the developer's side, you do need maintenance. In my experience, I deployed three or four projects and they just worked consistently. I never had any problems except the problem that I had on my own, bespoke code, but not the code that was actually provided in the TensorFlow library.
What do I think about the scalability of the solution?
I have never used it on multiple servers, as usually I have only dedicated servers, and tend to deploy on on those. I know that it could be scalable to multiple servers like AWS Lambda. I'm not sure, but it can be, although I have never worked with it.
How are customer service and technical support?
I once posted a question in the questions section on the TensorFlow website and I got an answer in two days and it was really helpful. That actually helped me solve the problem that I had. Apart from that, I didn't really use it because generally, I can find my answer by searching for the error on Google search. It has very good documentation and community support.
Which solution did I use previously and why did I switch?
I only worked with PyTorch and TensorFlow. I used PyTorch two and a half years ago. I started working with PyTorch and it was difficult for a young person who simply just wants to run models quickly. So in PyTorch, one has to have a huge experience until they deployed their first model. This is really demotivating for someone who is starting to learn the principles. That's a negative for PyTorch and it's a plus for TensorFlow. There is this simplistic structure of TensorFlow such that you can write a fully connected layer model in three lines, and run it on another data set in three or four lines. That is really nice in comparison to PyTorch as you have to write three different classes and data loaders. It's more time consuming to run in PyTorch. So I think it's another positivity for TensorFlow. I can't think of anything you can achieve with PyTorch that you cannot with TensorFlow. That's why I actually just stopped using PyTorch after awhile.
How was the initial setup?
It is very easy to set up as technically it only uses one or two lines if you are using Conda. It is easy to build a simple neural network, by just following the tutorial three lines and that's it. We have running neural networks. Pretty easy. You can host it on your own computer. It's a Python pip package. You can host it on your computer, on a server. The client that I worked with for the heat map prediction, was hosted on a server. It's a website. So the server for calculations was hosted on Amazon web services. So it could be all of these.
What's my experience with pricing, setup cost, and licensing?
I think for learners to deploy a project, you can actually use TensorFlow for free. It's just amazing to have an open-source platform like TensorFlow to deploy your own project. Here in Russia no one really cares about licenses, as it is totally open source and free. My clients in the United States were also pleased to learn when they enquired, that licensing is free.
What other advice do I have?
I had a problem with it during one implementation. I assumed that the data would be small. I think before implementing your TensorFlow model, it's crucial to note what is the size of your data and will it increase in the future? Usually, a developer wants to develop the model as easily as can it be. So they just tend to load all the data in memory and then run it into a flow model. So that is really problematic if your data is huge. That's why it's best for the developer before they write any line of code to check the data. If it doesn't fit in memory, they can use the TensorFlow functionality of load from a generator and this way they can actually have just one image in the memory at a time per thread. So it's really amazing. So I think that that is the tweak that I would advise developers to have, before developing their model.
I would rate TensorFlow 9 out of 10.
Which deployment model are you using for this solution?
Public Cloud
If public cloud, private cloud, or hybrid cloud, which cloud provider do you use?
Google
Disclosure: I am a real user, and this review is based on my own experience and opinions.
Excellent review. As a newbie to TensorFlow I really enjoyed reading this.