As we talked about a bit before, Best 7 The Python Libraries for Deep Learning there are a lot of different libraries and options that you are able to work with when it comes to Python helping out deep learning. We talked about a few of these before, but now it is time for us to dive right into some of the best Python libraries that work with deep learning, and see how they work and what they are able to offer to you. Related article: Keras Library for Deep Learning
The first library that we are going to take a look at here is known as TensorFlow. This one needs some time because the complexities of what you can do with this library can make it a bit intimidating for a lot of people to work within the beginning. But it is a great library to go with to help with things like linear algebra and vector calculus to name a few. The Tensors that show up in this library are able to provide us with some multi-dimensional data arrays, but some more introduction is most likely needed before we dive in and really understand what these tensors are all about.
So, let’s get started:
TensorFlow is a type of framework that is going to come to us from Google and it is used when you are ready to create some of your deep learning models. This TensorFlow is going to rely on data-flow graphs for numerical computation. And it has been able to stop in and make machine learning easier than ever before.
It makes the process of acquiring the data, training some of the models of machine learning that you want to use, making predictions, and even modifying some of the future results that you see easier. Since all of these are important when it comes to machine learning, it is important to learn how to use TensorFlow.
This is a library that was developed by Google’s Brain team to use on machine learning when you are doing it on a large scale. TensorFlow is going to bring together machine learning and deep learning algorithms and models and it makes them much more useful via a common metaphor. TensorFlow is going to use Python, just like what we said before, and it gives its users a front-end API that can be used when you would like to build applications, with the application being executed to a high-performance C++.
We will find that TensorFlow is often the library that is used when we want to not only build up but also train and run our deep neural networks. These neural networks can be great when we want to work with image recognition, handwritten digit classification, natural language processing, recurrent neural networks, and so much more in the process. There is a lot that we are able to do with the TensorFlow language, and when it is combined together with some of the extensions, the deep learning that you can accomplish will be amazing.
TensorFlow, along with some of the other deep learning libraries that are out there, is a great option to get some of your work done. Whether you want to work with deep neural networks or another form of deep learning to help get through your data and help you find the insights and predictions that are found inside, or you are looking to find some other uses of deep learning to help your business out, TensorFlow is one of the best Python libraries out there to help you get the work done.
To start off our discussion, we need to take a look at something called a vector. The vectors in TensorFlow are going to be a special type of matrix, one that can hold onto a rectangular array of numbers to help with deep learning. Because these vectors are going to be ordered collections of numbers, they will be seen in the view of column matrices. These vectors are going to come with one column in most cases, along with the rows that you need to get the process done. A good way to think about these vectors is a kind of scalar magnitude that is given some direction on how to behave.
Remember a good example of a scalar is going to be something like 60 m/s or 5 meters, while the vector would be more like 5 meters north. The difference that shows up between these two is that the vector will give us a direction on where to go, not just the distance, but the scalar is not going to do this and just focuses on the distance. Despite this happening, these examples are still going to be a bit different than what you may see with some of the other machine learning and deep learning projects we have focused on along the way, and this is pretty normal for now.
But, keep in mind with this one that the direction we are given in the vector is just going to be relative. This means that the direction has to be measured relative to some reference point that you add to the whole thing. We will show this direction in units of radians or in degrees to make this easier. For this one to work in most situations, you have to assume that the direction is going to be positive and that it is going to head in a rotation that is counterclockwise from the direction that we used as the reference point.
When we look at this through a more visual lens though, we have to make sure that the vectors are represented with arrows. This means that you have to consider these vectors as arrows that are going to come with a length and a direction at the same time. the direction you will need to follow can be indicated by looking at the head of the arrow, but then the length or the distance that we want to follow is going to be best indicated when we see how long the arrow truly is.
So, this is going to bring us to a crossroads where we need to focus on what these plane vectors are all about? Plane vectors are going to be a very easy setup when it comes to tensors. They can be similar to what we see with the regular vectors that we talked about before, but the sole difference is that they are going to be found in what is known as the vector space with these ones.
This may be a bit confusing at first, but to give us a better understanding of what this means, we need to bring out an example of how it all works. Let’s say in this example that we are working with a vector that is 2 X 1. This means that the vector is going to belong to a set of real numbers that are paired two at a time. To say this in another manner that may be easier to explain, they are going to both be a part of the two-space. When this does happen, you can then represent the vectors on the coordinate, with the idea of x and y like we are familiar with, plane, with rays, or the arrows like we discussed.
As we work from the coordinate plane that we just discussed, we have to start out with the vectors on the standard position with an endpoint at the origin, which is the point (0, 0), or you will derive the value of our x coordinate by looking at the first row of the vector. It is also possible for us to go through at this time and find they coordinate in our second row.
The thing that we have to keep in mind with this one is that the standard position is not something that has to stay the same all of the time, and it is not something that we have to maintain either. The vectors can move, often going parallel to themselves in the same plane, and we won’t have to be concerned about any of the changes that show up with this.
The Basics of the TensorFlow Library
With some of this background information ready to go and a better understanding of the tensors and vectors that come with this library, it is now time to go on another track a bit and learn some more of the basics that come with TensorFlow. We are going to start by looking at some of the steps to set up this library and get it ready to use, starting with some basics so you can become more familiar with the basics.
When you write out some of the codes that you want to use with TensorFlow, all of this is going to happen in the program this library provides, and we need to make sure that it is run as a chunk. This can seem a bit contradictory in the beginning, since we want to make sure that the programs we write out are done in Python. However, if you are able to, or if you find that this method is easier, working with the part known as TensorFlow’s Interaction Session is often the best choice. This is even a good one that helps us to be more interactive with our code writing and works well with IPython.
For what we are looking at here with some of the basics, we want to put some of our focus on the second option. This is important because it is going to help us get a nice start with not only working in the TensorFlow library but also some help with how to work with deep learning in the process. Before we get into some of the cool things that we are able to do with TensorFlow and deep learning, which we will discuss in the next section, we first need to get into a few topics to help us out.
To do any of the basics, we need to first import the TensorFlow library under the alias of “TF,” as we did before. We will then be able to initialize two variables that are going to be constants. Then you need to pass an array of four numbers using the function of “constant().”
It is possible that you could go through and pass in an integer if you would like. But for the most part, working with and trying to pass an array is going to be easier and will work the best for your needs. Tensors are often about arrays so this is why it is better to use them.
Once you have put in the integer, or more likely the array, that you want to use, it is time to use the function of “multiply()” to get the variables to multiply together. Store the result as the “result” variable. And last, print out the result using the function of print().
Keep in mind that if you have defined the constants in the DataCampLight code. However, there are a few other value types that you can work within this, namely known as the placeholders. These placeholders are important because they are going to be values that are unassigned and that can be initialized by the session where you choose to let it run. Like the name is given away, the placeholder for a particular tensor that you want to work with will be fed when the session actually runs.
During this process, we can also bring in the variables. These are the options that will have a value attached to them (you get to choose the value that you would like to attach to each of the variables as you go along), and we can change them as we go along. If you would like to go through this process and double-check that no one is able to come in here later and make changes to the values as you have them in the equation, then you need to switch over to some constants. If you are not too worried about the fact that these values can change occasionally, or you would like to have the ability to go in later and make some changes to the value, then the variables are a great option to work with.
The results of the code that you are able to write up here will end up with an abstract tensor in your computational graph. Even though this may not seem like it should work all of the time in the program, the results that come with this one are not going to be calculated. It is just going to be pushed through the algorithm and helps to define the model, but there wasn’t a process that ran to help us calculate the results.
Deep Learning and TensorFlow
Now that we have had some time to look at the basics that come with TensorFlow and seen some of the benefits that come with using this library, it is time to actually take a look at how we can add TensorFlow in with some of the deep learning that we have discussed in this guidebook. The way that we are going to work with this, for now, is by constructing our own architecture for a neural network. But this time, we want to make sure that we can accomplish this with the package from TensorFlow.
Just like we can do when we bring out the Keras library (we will touch on this a bit in the next chapter), we will need to create our own neural network by going through it layer by layer. If you haven’t taken the chance to do this yet, make sure that you go through and import the package for “TensorFlow” into the workspace that you want to use and use the conventional alias of “TF” to make it easier. You can also choose out another name if needed.
From this step, our goal is to initialize the graph using the simple function of Graph() to help get this done. This is an important function to bring into the group because it is the one that you will use to define the computation as you go along. Remember as we are doing the work here and we create a graph, we do not need to worry about computing things at this time. This is due to the fact that the graph, right now at least, is not holding onto any of the values that we need. Right now, the graph is being used to define the operations that we would like to get running later.
In this situation, we are going to work with a function called as_default() to make sure that the default context is set up and ready to go. This one works the best because it will return to us a context manager that can make the specific graph that we want into the default graph. This is a good method to learn because you are able to use it any time that your model needs to have more than one graph in the same process.
When you use the function that we listed out above, you will then need to come up with what is known as the global default graph. This is important because it is the graph that will hold onto all of your operations. That is until you go through and create a new graph to help out with this.
Once we are to this point, we also need to take some time to add in the various operations that we would like to see in the graph. The way that we do this is by building up the model. Once this is done, we compile the model and then define the metric, the optimizer, and the loss function. You can then work with TensorFlow and this is the step where we bring this in. Some of the steps that need to happen when we get to this point include:
- Define the placeholders that you want to use for your labels and inputs because we are not going to put in the real data at this time. remember that the placeholders that you are using here are values that are unassigned and that will be initialized as soon you as go through and run it. so, when you are ready to run the session, these placeholders are going to get the values from your set of data that you pass through in the function for run().
- Now we want to work to build up our network. You can start this by flattening out the input, and this is done by working with the function flatten(). This will give you an array of shapes, rather than the shape that is used with images that are grayscale.
- After you have been able to flatten up the input, your construct needs to become a fully connected layer that generates logits of size. Logits is going to be the function that operates on the unscaled output of previous layers. And then it is going to use the relative scale to make sure that there is an understanding that the units are linear.
After you have had some time to work with the perceptron that is multi-layer, you will then be able to make sure that the loss function is defined. The choice that you make with your loss function is going to depend on what kind of task you are doing at the time.
- Remember here that when you use regression, it is going to be able to predict values that are continuous. When you work with classification, you are going to predict the discrete classes or values of data points.
From here, you can wrap up the reduce_mean) function, which is going to compute the mean of elements across the whole tensor.
- Now you want to take the training optimizer and define that. Some of the best algorithms that you can use to optimize this include RMSprop, ADAM, and Stochastic Gradient Descent. Depending on the algorithm you use, you may need to set up some time parameters, such as learning rate or momentum.
- And to finish, you will need to initialize the operations in order to execute the whole thing before you go and start the training.
While we did spend some time looking at some of the amazing things that we are able to do with the TensorFlow library, remember that these are just a sampling of all the neat models and algorithms that come with this library.
This is really a great program to use because it helps you out with artificial intelligence, deep learning, and machine learning all wrapped up in one. If this sounds like a library that can help out with some of the projects that you want to complete, take some time to download it to your computer, and experiment a bit to see what deep learning models and features it is able to help you out with.