CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
Path: blob/main/005_Optimize_Neural_Network_Architecture.ipynb
Views: 47
Data preparation
Refer to https://github.com/better-data-science/TensorFlow/blob/main/003_TensorFlow_Classification.ipynb for detailed preparation instructions
How will we approach optimization
Let's declare some constants
We want to optimize a network with 3 hidden layers
Each hidden layer can have from 64 to 256 nodes
The step size between nodes is 64
So the possibilities are: 64, 128, 192, 256
Possibilities:
Taking them to two layers:
And now it's just a task of calculating all permutations between these two lists:
We want to optimize a 3-layer-deep neural network, so we'll have a bit more possibilities:
Here are the permutations:
We'll iterate over the permutations and then iterate again over the values of individual permutation to get the node count for each hidden layer:
We'll create a new
Sequential
model at each iterationAnd add an
InputLayer
to it with a shape of(12,)
(the number of columns in our dataset)
Then, we'll iterate over the items in a single permutation and add a
Dense
layer to the model with the current number of nodesFinally, we'll add a
Dense
output layerWe'll also setting a name to the model so it's easier to compare them later:
Here's how a single model looks like:
Not too bad, right?
Let's wrap all this logic into a single function next.
Get architecture possibilities from a function
This one will have a lot of parameters
But it doesn't do anything we haven't discussed so far:
Let's test it:
Let's print the names and the count:
So we have 64 models in total
It will take some time to optimize
Let's declare another function for that
Model optimization function
This one will accept the list of models, training and testing sets (both features and the target), and optionally a number of epochs and verbosity
It's advised to set verbosity to 0 so you don't get overwhelmed with the console output
Let's optimize the architecture!
It will take some time
And there you have it!