 Now, our task for this exercise is to take our test dataset and harness it and plug it in to our neural network that we have yet to run or yet to write. You can probably see the pattern here, but we are starting very deliberately by creating the task. Here's the dataset that we want to learn. And then from there, we're going to start at the top level and work our way down. So at the very highest, most abstract, we're going to pull in the dataset, create this neural network, and run it on the data, even though we haven't written any of the code to do that. And then we'll fill in underneath at progressively finer levels of detail until we finally get down to native Python code. So this run framework.py is a Python file, a .py file that will run as a script. We'll set it up so that the very first thing it does is to pull in our 2x2 dataset. And then, based on that, or using that, use the get data sets method to pull in these training set and evaluation set generators that we just wrote. And then in order to know how to plug it in to the neural network, or how to create a neural network to plug it into. The very first thing we need to know is how many input and how many output nodes this neural network is going to have. So to find that, we just peel off the very first example from our training set. Based on that, we find the total number of pixels in it. We of course know that it has two rows and two columns, and so 2x2 is 4, and so it's going to be four pixels. But we're writing this so that if we, in the future, wanted to swap out our 2x2 set for a 3x3 or something larger, we could just calculate that based on the data, and we don't have any numbers hard-coded into our script here. So we calculate the number of pixels, and then we create a list. So this is the number of nodes in each layer in our neural network. The first element is always the input layer. The last element is always the output layer. And in this case, there's nothing in between. So this is a really trivial neural network. It just has an input and output layer, no hidden nodes. It doesn't have any of the beauty and fanciness of a normal neural network, but it's a starting point for us writing our code. And we've specified the number of nodes in both those input and output layers as the number of pixels. Because we have an autoencoder, we're going to be generating an output. We want it to look like the input as much as possible. So we're going to have the same number of pixels. It'll look exactly like the input, or at least as close as we can get. That's why we're safe for autoencoders choosing the same number of nodes for input and output layers.