What is TensorFlow? Explained by someone who has no clue what he is talking about.
As the new craze around the world in computing is all about AI and machine learning I thought I would take a deeper dive into understanding what it is as someone who is brand new to coding. I have also recently been swimming in the deep ocean that is Python and noticed one of the most popular libraries used was Google's TensorFlow Library and decided to do some surface-level snooping to see what is going on.
TensorFlow is a popular open-source Python library used for building and training machine learning models. Developed by Google Brain Team, ut was released in 2015 and has since become one of the most widely used machine learning libraries.
TensorFlow is particularly popular for deep learning applications, including image recognition, natural language processing, and speech recognition. It offers a flexible and modular architecture, allowing users to easily build and train a wide variety of learning models.
TensorFlow is chest deep in features such as:
Graph-based Computation
TensorFlow uses a graph-based computation model where operations are represented as nodes in a graph, making it easy to parallelize computations and optimize performance.
To my understanding, this is a flowchart model of what happens with your inputted data creating something akin to a "neural network".
Automatic Differentiation
TensorFlow utilizes automatic differentiation which is essential for training neural networks. This makes it easy to compute gradients for optimization algorithms like gradient descent.
As a previous physics major, this makes sense to me whereas I will dumb it down slightly for those of us who don't know about gradient descent and how this could help computers. The idea of gradient descent is taking a function and continually lowering its parameters to find a local minimum of a differentiable function (while gradient ascent would be the maximum).
Wikipedia has a great analogy of how it works using basic intuition and a hypothetical scenario where there is someone stuck in the mountains and the fog is extremely thick. So as this person, you look at your current position around and know you want to go down in the fastest method possible. Due to the fog, you can not see the most optimal or quickest path down and must use only local information to get to the next step. To go down the fastest you would look around for the steepest slope downward that you see until you then have to look around again and repeat the process until you have reached the bottom. Conversely, this can be used for ascent as well leading to finding the most natural pathways depending on the areas in which you would begin the ascent or descent of the mountain.
When moving this principle to computing data, it can help the program differentiate dataflow into certain patterns and optimize the way things are computed. Similar to a search query. If you wanted to find a nearby Chinese restaurant and your search history pulled up "Happy China" or "El Azteca" which one makes more sense to be the output you desired?
Distributed Computing
TensorFlow allows users to train models on multiple GPUs or machines. This significantly speeds up training times for large models.
Pre-built Models
TensorFlow comes packed with prebuilt models for common machine learning tasks such as image recognition and natural language processing and can be modified to fit your specific needs. I have seen this and other similar models used for AI voice changers and live translation software.
Visualization Tools:
TensorFlow includes a range of visualization tools that make it easy to understand and debug your models. Including those to visualize graphs, Debugging training, and visualize learned features.
Overall, TensorFlow is a powerful and versatile library for machine learning in Python. It has a large and active community of developers, which means that there are plenty of resources available for learning and troubleshooting. Whether you are a beginner or an experienced machine learning practitioner, TensorFlow is a great choice for your first step in building and training machine learning models.