Files
FYS-STK4155/doc/pub/week41/html/._week41-bs036.html
T
Morten Hjorth-Jensen c5759046bd typo correction
2021-10-15 15:41:10 +02:00

577 lines
46 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--
Automatically generated HTML file from DocOnce source
(https://github.com/doconce/doconce/)
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="DocOnce: https://github.com/doconce/doconce/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Week 41 Constructing a Neural Network code, Tensor flow and start Convolutional Neural Networks">
<title>Week 41 Constructing a Neural Network code, Tensor flow and start Convolutional Neural Networks</title>
<!-- Bootstrap style: bootstrap -->
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<!-- not necessary
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
-->
<style type="text/css">
/* Add scrollbar to dropdown menus in bootstrap navigation bar */
.dropdown-menu {
height: auto;
max-height: 400px;
overflow-x: hidden;
}
/* Adds an invisible element before each target to offset for the navigation
bar */
.anchor::before {
content:"";
display:block;
height:50px; /* fixed header height for style bootstrap */
margin:-50px 0 0; /* negative fixed header height */
}
</style>
</head>
<!-- tocinfo
{'highest level': 2,
'sections': [('Plan for week 41', 2, None, 'plan-for-week-41'),
('Videos on Neural Networks',
2,
None,
'videos-on-neural-networks'),
('Setting up the Back propagation algorithm',
2,
None,
'setting-up-the-back-propagation-algorithm'),
('Setting up a Multi-layer perceptron model for classification',
2,
None,
'setting-up-a-multi-layer-perceptron-model-for-classification'),
('Defining the cost function',
2,
None,
'defining-the-cost-function'),
('Example: binary classification problem',
2,
None,
'example-binary-classification-problem'),
('The Softmax function', 2, None, 'the-softmax-function'),
('Developing a code for doing neural networks with back '
'propagation',
2,
None,
'developing-a-code-for-doing-neural-networks-with-back-propagation'),
('Collect and pre-process data',
2,
None,
'collect-and-pre-process-data'),
('Train and test datasets', 2, None, 'train-and-test-datasets'),
('Define model and architecture',
2,
None,
'define-model-and-architecture'),
('Layers', 2, None, 'layers'),
('Weights and biases', 2, None, 'weights-and-biases'),
('Feed-forward pass', 2, None, 'feed-forward-pass'),
('Matrix multiplications', 2, None, 'matrix-multiplications'),
('Choose cost function and optimizer',
2,
None,
'choose-cost-function-and-optimizer'),
('Optimizing the cost function',
2,
None,
'optimizing-the-cost-function'),
('Regularization', 2, None, 'regularization'),
('Matrix multiplication', 2, None, 'matrix-multiplication'),
('Improving performance', 2, None, 'improving-performance'),
('Full object-oriented implementation',
2,
None,
'full-object-oriented-implementation'),
('Evaluate model performance on test data',
2,
None,
'evaluate-model-performance-on-test-data'),
('Adjust hyperparameters', 2, None, 'adjust-hyperparameters'),
('Visualization', 2, None, 'visualization'),
('scikit-learn implementation',
2,
None,
'scikit-learn-implementation'),
('Visualization', 2, None, 'visualization'),
('Testing our code for the XOR, OR and AND gates',
2,
None,
'testing-our-code-for-the-xor-or-and-and-gates'),
('The AND and XOR Gates', 2, None, 'the-and-and-xor-gates'),
('Representing the Data Sets',
2,
None,
'representing-the-data-sets'),
('Setting up the Neural Network',
2,
None,
'setting-up-the-neural-network'),
('The Code using Scikit-Learn',
2,
None,
'the-code-using-scikit-learn'),
('Building neural networks in Tensorflow and Keras',
2,
None,
'building-neural-networks-in-tensorflow-and-keras'),
('Tensorflow', 2, None, 'tensorflow'),
('Using Keras', 2, None, 'using-keras'),
('Collect and pre-process data',
2,
None,
'collect-and-pre-process-data'),
('The Breast Cancer Data, now with Keras',
2,
None,
'the-breast-cancer-data-now-with-keras'),
('The Mathematics of Neural Networks',
2,
None,
'the-mathematics-of-neural-networks'),
('Fine-tuning neural network hyperparameters',
2,
None,
'fine-tuning-neural-network-hyperparameters'),
('Hidden layers', 2, None, 'hidden-layers'),
('Which activation function should I use?',
2,
None,
'which-activation-function-should-i-use'),
('Is the Logistic activation function (Sigmoid) our choice?',
2,
None,
'is-the-logistic-activation-function-sigmoid-our-choice'),
('The derivative of the Logistic funtion',
2,
None,
'the-derivative-of-the-logistic-funtion'),
('The RELU function family', 2, None, 'the-relu-function-family'),
('Which activation function should we use?',
2,
None,
'which-activation-function-should-we-use'),
('More on activation functions, output layers',
2,
None,
'more-on-activation-functions-output-layers'),
('Batch Normalization', 2, None, 'batch-normalization'),
('Dropout', 2, None, 'dropout'),
('Gradient Clipping', 2, None, 'gradient-clipping'),
('A very nice website on Neural Networks',
2,
None,
'a-very-nice-website-on-neural-networks'),
('A top-down perspective on Neural networks',
2,
None,
'a-top-down-perspective-on-neural-networks'),
('Limitations of supervised learning with deep networks',
2,
None,
'limitations-of-supervised-learning-with-deep-networks'),
('Overarching Views, a personal note',
2,
None,
'overarching-views-a-personal-note'),
('From a Spherical Cow to a real one',
2,
None,
'from-a-spherical-cow-to-a-real-one'),
('Convolutional Neural Networks (recognizing images)',
2,
None,
'convolutional-neural-networks-recognizing-images'),
('Regular NNs dont scale well to full images',
2,
None,
'regular-nns-don-t-scale-well-to-full-images'),
('3D volumes of neurons', 2, None, '3d-volumes-of-neurons'),
('Layers used to build CNNs',
2,
None,
'layers-used-to-build-cnns'),
('Transforming images', 2, None, 'transforming-images'),
('CNNs in brief', 2, None, 'cnns-in-brief'),
('CNNs in more detail, building convolutional neural networks in '
'Tensorflow and Keras',
2,
None,
'cnns-in-more-detail-building-convolutional-neural-networks-in-tensorflow-and-keras'),
('Setting it up', 2, None, 'setting-it-up'),
('The MNIST dataset again', 2, None, 'the-mnist-dataset-again'),
('Strong correlations', 2, None, 'strong-correlations'),
('Layers of a CNN', 2, None, 'layers-of-a-cnn'),
('Systematic reduction', 2, None, 'systematic-reduction'),
('Prerequisites: Collect and pre-process data',
2,
None,
'prerequisites-collect-and-pre-process-data'),
('Importing Keras and Tensorflow',
2,
None,
'importing-keras-and-tensorflow'),
('Running with Keras', 2, None, 'running-with-keras'),
('Final part', 2, None, 'final-part'),
('Final visualization', 2, None, 'final-visualization'),
('Fun links', 2, None, 'fun-links')]}
end of tocinfo -->
<body>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: {
equationNumbers: { autoNumber: "none" },
extensions: ["AMSmath.js", "AMSsymbols.js", "autobold.js", "color.js"]
}
});
</script>
<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<!-- Bootstrap navigation bar -->
<div class="navbar navbar-default navbar-fixed-top">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-responsive-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="week41-bs.html">Week 41 Constructing a Neural Network code, Tensor flow and start Convolutional Neural Networks</a>
</div>
<div class="navbar-collapse collapse navbar-responsive-collapse">
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Contents <b class="caret"></b></a>
<ul class="dropdown-menu">
<!-- navigation toc: --> <li><a href="._week41-bs001.html#plan-for-week-41" style="font-size: 80%;">Plan for week 41</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs002.html#videos-on-neural-networks" style="font-size: 80%;">Videos on Neural Networks</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs003.html#setting-up-the-back-propagation-algorithm" style="font-size: 80%;">Setting up the Back propagation algorithm</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs004.html#setting-up-a-multi-layer-perceptron-model-for-classification" style="font-size: 80%;">Setting up a Multi-layer perceptron model for classification</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs005.html#defining-the-cost-function" style="font-size: 80%;">Defining the cost function</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs006.html#example-binary-classification-problem" style="font-size: 80%;">Example: binary classification problem</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs007.html#the-softmax-function" style="font-size: 80%;">The Softmax function</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs008.html#developing-a-code-for-doing-neural-networks-with-back-propagation" style="font-size: 80%;">Developing a code for doing neural networks with back propagation</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs035.html#collect-and-pre-process-data" style="font-size: 80%;">Collect and pre-process data</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs010.html#train-and-test-datasets" style="font-size: 80%;">Train and test datasets</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs011.html#define-model-and-architecture" style="font-size: 80%;">Define model and architecture</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs012.html#layers" style="font-size: 80%;">Layers</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs013.html#weights-and-biases" style="font-size: 80%;">Weights and biases</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs014.html#feed-forward-pass" style="font-size: 80%;">Feed-forward pass</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs015.html#matrix-multiplications" style="font-size: 80%;">Matrix multiplications</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs016.html#choose-cost-function-and-optimizer" style="font-size: 80%;">Choose cost function and optimizer</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs017.html#optimizing-the-cost-function" style="font-size: 80%;">Optimizing the cost function</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs018.html#regularization" style="font-size: 80%;">Regularization</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs019.html#matrix-multiplication" style="font-size: 80%;">Matrix multiplication</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs020.html#improving-performance" style="font-size: 80%;">Improving performance</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs021.html#full-object-oriented-implementation" style="font-size: 80%;">Full object-oriented implementation</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs022.html#evaluate-model-performance-on-test-data" style="font-size: 80%;">Evaluate model performance on test data</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs023.html#adjust-hyperparameters" style="font-size: 80%;">Adjust hyperparameters</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs026.html#visualization" style="font-size: 80%;">Visualization</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs025.html#scikit-learn-implementation" style="font-size: 80%;">scikit-learn implementation</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs026.html#visualization" style="font-size: 80%;">Visualization</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs027.html#testing-our-code-for-the-xor-or-and-and-gates" style="font-size: 80%;">Testing our code for the XOR, OR and AND gates</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs028.html#the-and-and-xor-gates" style="font-size: 80%;">The AND and XOR Gates</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs029.html#representing-the-data-sets" style="font-size: 80%;">Representing the Data Sets</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs030.html#setting-up-the-neural-network" style="font-size: 80%;">Setting up the Neural Network</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs031.html#the-code-using-scikit-learn" style="font-size: 80%;">The Code using Scikit-Learn</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs032.html#building-neural-networks-in-tensorflow-and-keras" style="font-size: 80%;">Building neural networks in Tensorflow and Keras</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs033.html#tensorflow" style="font-size: 80%;">Tensorflow</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs034.html#using-keras" style="font-size: 80%;">Using Keras</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs035.html#collect-and-pre-process-data" style="font-size: 80%;">Collect and pre-process data</a></li>
<!-- navigation toc: --> <li><a href="#the-breast-cancer-data-now-with-keras" style="font-size: 80%;">The Breast Cancer Data, now with Keras</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs037.html#the-mathematics-of-neural-networks" style="font-size: 80%;">The Mathematics of Neural Networks</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs038.html#fine-tuning-neural-network-hyperparameters" style="font-size: 80%;">Fine-tuning neural network hyperparameters</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs039.html#hidden-layers" style="font-size: 80%;">Hidden layers</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs040.html#which-activation-function-should-i-use" style="font-size: 80%;">Which activation function should I use?</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs041.html#is-the-logistic-activation-function-sigmoid-our-choice" style="font-size: 80%;">Is the Logistic activation function (Sigmoid) our choice?</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs042.html#the-derivative-of-the-logistic-funtion" style="font-size: 80%;">The derivative of the Logistic funtion</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs043.html#the-relu-function-family" style="font-size: 80%;">The RELU function family</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs044.html#which-activation-function-should-we-use" style="font-size: 80%;">Which activation function should we use?</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs045.html#more-on-activation-functions-output-layers" style="font-size: 80%;">More on activation functions, output layers</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs046.html#batch-normalization" style="font-size: 80%;">Batch Normalization</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs047.html#dropout" style="font-size: 80%;">Dropout</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs048.html#gradient-clipping" style="font-size: 80%;">Gradient Clipping</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs049.html#a-very-nice-website-on-neural-networks" style="font-size: 80%;">A very nice website on Neural Networks</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs050.html#a-top-down-perspective-on-neural-networks" style="font-size: 80%;">A top-down perspective on Neural networks</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs051.html#limitations-of-supervised-learning-with-deep-networks" style="font-size: 80%;">Limitations of supervised learning with deep networks</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs052.html#overarching-views-a-personal-note" style="font-size: 80%;">Overarching Views, a personal note</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs053.html#from-a-spherical-cow-to-a-real-one" style="font-size: 80%;">From a Spherical Cow to a real one</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs054.html#convolutional-neural-networks-recognizing-images" style="font-size: 80%;">Convolutional Neural Networks (recognizing images)</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs055.html#regular-nns-don-t-scale-well-to-full-images" style="font-size: 80%;">Regular NNs dont scale well to full images</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs056.html#3d-volumes-of-neurons" style="font-size: 80%;">3D volumes of neurons</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs057.html#layers-used-to-build-cnns" style="font-size: 80%;">Layers used to build CNNs</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs058.html#transforming-images" style="font-size: 80%;">Transforming images</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs059.html#cnns-in-brief" style="font-size: 80%;">CNNs in brief</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs060.html#cnns-in-more-detail-building-convolutional-neural-networks-in-tensorflow-and-keras" style="font-size: 80%;">CNNs in more detail, building convolutional neural networks in Tensorflow and Keras</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs061.html#setting-it-up" style="font-size: 80%;">Setting it up</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs062.html#the-mnist-dataset-again" style="font-size: 80%;">The MNIST dataset again</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs063.html#strong-correlations" style="font-size: 80%;">Strong correlations</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs064.html#layers-of-a-cnn" style="font-size: 80%;">Layers of a CNN</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs065.html#systematic-reduction" style="font-size: 80%;">Systematic reduction</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs066.html#prerequisites-collect-and-pre-process-data" style="font-size: 80%;">Prerequisites: Collect and pre-process data</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs067.html#importing-keras-and-tensorflow" style="font-size: 80%;">Importing Keras and Tensorflow</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs068.html#running-with-keras" style="font-size: 80%;">Running with Keras</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs069.html#final-part" style="font-size: 80%;">Final part</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs070.html#final-visualization" style="font-size: 80%;">Final visualization</a></li>
<!-- navigation toc: --> <li><a href="._week41-bs071.html#fun-links" style="font-size: 80%;">Fun links</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div> <!-- end of navigation bar -->
<div class="container">
<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p> <!-- add vertical space -->
<a name="part0036"></a>
<!-- !split -->
<h2 id="the-breast-cancer-data-now-with-keras" class="anchor">The Breast Cancer Data, now with Keras </h2>
<p>
<!-- code=python (!bc pycod) typeset with pygments style "default" -->
<div class="highlight" style="background: #f8f8f8"><pre style="line-height: 125%;"><span></span><span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">tensorflow</span> <span style="color: #008000; font-weight: bold">as</span> <span style="color: #0000FF; font-weight: bold">tf</span>
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">tensorflow.keras.layers</span> <span style="color: #008000; font-weight: bold">import</span> Input
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">tensorflow.keras.models</span> <span style="color: #008000; font-weight: bold">import</span> Sequential <span style="color: #408080; font-style: italic">#This allows appending layers to existing models</span>
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">tensorflow.keras.layers</span> <span style="color: #008000; font-weight: bold">import</span> Dense <span style="color: #408080; font-style: italic">#This allows defining the characteristics of a particular layer</span>
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">tensorflow.keras</span> <span style="color: #008000; font-weight: bold">import</span> optimizers <span style="color: #408080; font-style: italic">#This allows using whichever optimiser we want (sgd,adam,RMSprop)</span>
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">tensorflow.keras</span> <span style="color: #008000; font-weight: bold">import</span> regularizers <span style="color: #408080; font-style: italic">#This allows using whichever regularizer we want (l1,l2,l1_l2)</span>
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">tensorflow.keras.utils</span> <span style="color: #008000; font-weight: bold">import</span> to_categorical <span style="color: #408080; font-style: italic">#This allows using categorical cross entropy as the cost function</span>
<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">numpy</span> <span style="color: #008000; font-weight: bold">as</span> <span style="color: #0000FF; font-weight: bold">np</span>
<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">matplotlib.pyplot</span> <span style="color: #008000; font-weight: bold">as</span> <span style="color: #0000FF; font-weight: bold">plt</span>
<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">seaborn</span> <span style="color: #008000; font-weight: bold">as</span> <span style="color: #0000FF; font-weight: bold">sns</span>
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">sklearn.model_selection</span> <span style="color: #008000; font-weight: bold">import</span> train_test_split <span style="color: #008000; font-weight: bold">as</span> splitter
<span style="color: #008000; font-weight: bold">from</span> <span style="color: #0000FF; font-weight: bold">sklearn.datasets</span> <span style="color: #008000; font-weight: bold">import</span> load_breast_cancer
<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">pickle</span>
<span style="color: #008000; font-weight: bold">import</span> <span style="color: #0000FF; font-weight: bold">os</span>
<span style="color: #BA2121; font-style: italic">&quot;&quot;&quot;Load breast cancer dataset&quot;&quot;&quot;</span>
np<span style="color: #666666">.</span>random<span style="color: #666666">.</span>seed(<span style="color: #666666">0</span>) <span style="color: #408080; font-style: italic">#create same seed for random number every time</span>
cancer<span style="color: #666666">=</span>load_breast_cancer() <span style="color: #408080; font-style: italic">#Download breast cancer dataset</span>
inputs<span style="color: #666666">=</span>cancer<span style="color: #666666">.</span>data <span style="color: #408080; font-style: italic">#Feature matrix of 569 rows (samples) and 30 columns (parameters)</span>
outputs<span style="color: #666666">=</span>cancer<span style="color: #666666">.</span>target <span style="color: #408080; font-style: italic">#Label array of 569 rows (0 for benign and 1 for malignant)</span>
labels<span style="color: #666666">=</span>cancer<span style="color: #666666">.</span>feature_names[<span style="color: #666666">0</span>:<span style="color: #666666">30</span>]
<span style="color: #008000">print</span>(<span style="color: #BA2121">&#39;The content of the breast cancer dataset is:&#39;</span>) <span style="color: #408080; font-style: italic">#Print information about the datasets</span>
<span style="color: #008000">print</span>(labels)
<span style="color: #008000">print</span>(<span style="color: #BA2121">&#39;-------------------------&#39;</span>)
<span style="color: #008000">print</span>(<span style="color: #BA2121">&quot;inputs = &quot;</span> <span style="color: #666666">+</span> <span style="color: #008000">str</span>(inputs<span style="color: #666666">.</span>shape))
<span style="color: #008000">print</span>(<span style="color: #BA2121">&quot;outputs = &quot;</span> <span style="color: #666666">+</span> <span style="color: #008000">str</span>(outputs<span style="color: #666666">.</span>shape))
<span style="color: #008000">print</span>(<span style="color: #BA2121">&quot;labels = &quot;</span><span style="color: #666666">+</span> <span style="color: #008000">str</span>(labels<span style="color: #666666">.</span>shape))
x<span style="color: #666666">=</span>inputs <span style="color: #408080; font-style: italic">#Reassign the Feature and Label matrices to other variables</span>
y<span style="color: #666666">=</span>outputs
<span style="color: #408080; font-style: italic">#%% </span>
<span style="color: #408080; font-style: italic"># Visualisation of dataset (for correlation analysis)</span>
plt<span style="color: #666666">.</span>figure()
plt<span style="color: #666666">.</span>scatter(x[:,<span style="color: #666666">0</span>],x[:,<span style="color: #666666">2</span>],s<span style="color: #666666">=40</span>,c<span style="color: #666666">=</span>y,cmap<span style="color: #666666">=</span>plt<span style="color: #666666">.</span>cm<span style="color: #666666">.</span>Spectral)
plt<span style="color: #666666">.</span>xlabel(<span style="color: #BA2121">&#39;Mean radius&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>ylabel(<span style="color: #BA2121">&#39;Mean perimeter&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>show()
plt<span style="color: #666666">.</span>figure()
plt<span style="color: #666666">.</span>scatter(x[:,<span style="color: #666666">5</span>],x[:,<span style="color: #666666">6</span>],s<span style="color: #666666">=40</span>,c<span style="color: #666666">=</span>y, cmap<span style="color: #666666">=</span>plt<span style="color: #666666">.</span>cm<span style="color: #666666">.</span>Spectral)
plt<span style="color: #666666">.</span>xlabel(<span style="color: #BA2121">&#39;Mean compactness&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>ylabel(<span style="color: #BA2121">&#39;Mean concavity&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>show()
plt<span style="color: #666666">.</span>figure()
plt<span style="color: #666666">.</span>scatter(x[:,<span style="color: #666666">0</span>],x[:,<span style="color: #666666">1</span>],s<span style="color: #666666">=40</span>,c<span style="color: #666666">=</span>y,cmap<span style="color: #666666">=</span>plt<span style="color: #666666">.</span>cm<span style="color: #666666">.</span>Spectral)
plt<span style="color: #666666">.</span>xlabel(<span style="color: #BA2121">&#39;Mean radius&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>ylabel(<span style="color: #BA2121">&#39;Mean texture&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>show()
plt<span style="color: #666666">.</span>figure()
plt<span style="color: #666666">.</span>scatter(x[:,<span style="color: #666666">2</span>],x[:,<span style="color: #666666">1</span>],s<span style="color: #666666">=40</span>,c<span style="color: #666666">=</span>y,cmap<span style="color: #666666">=</span>plt<span style="color: #666666">.</span>cm<span style="color: #666666">.</span>Spectral)
plt<span style="color: #666666">.</span>xlabel(<span style="color: #BA2121">&#39;Mean perimeter&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>ylabel(<span style="color: #BA2121">&#39;Mean compactness&#39;</span>,fontweight<span style="color: #666666">=</span><span style="color: #BA2121">&#39;bold&#39;</span>)
plt<span style="color: #666666">.</span>show()
<span style="color: #408080; font-style: italic"># Generate training and testing datasets</span>
<span style="color: #408080; font-style: italic">#Select features relevant to classification (texture,perimeter,compactness and symmetery) </span>
<span style="color: #408080; font-style: italic">#and add to input matrix</span>
temp1<span style="color: #666666">=</span>np<span style="color: #666666">.</span>reshape(x[:,<span style="color: #666666">1</span>],(<span style="color: #008000">len</span>(x[:,<span style="color: #666666">1</span>]),<span style="color: #666666">1</span>))
temp2<span style="color: #666666">=</span>np<span style="color: #666666">.</span>reshape(x[:,<span style="color: #666666">2</span>],(<span style="color: #008000">len</span>(x[:,<span style="color: #666666">2</span>]),<span style="color: #666666">1</span>))
X<span style="color: #666666">=</span>np<span style="color: #666666">.</span>hstack((temp1,temp2))
temp<span style="color: #666666">=</span>np<span style="color: #666666">.</span>reshape(x[:,<span style="color: #666666">5</span>],(<span style="color: #008000">len</span>(x[:,<span style="color: #666666">5</span>]),<span style="color: #666666">1</span>))
X<span style="color: #666666">=</span>np<span style="color: #666666">.</span>hstack((X,temp))
temp<span style="color: #666666">=</span>np<span style="color: #666666">.</span>reshape(x[:,<span style="color: #666666">8</span>],(<span style="color: #008000">len</span>(x[:,<span style="color: #666666">8</span>]),<span style="color: #666666">1</span>))
X<span style="color: #666666">=</span>np<span style="color: #666666">.</span>hstack((X,temp))
X_train,X_test,y_train,y_test<span style="color: #666666">=</span>splitter(X,y,test_size<span style="color: #666666">=0.1</span>) <span style="color: #408080; font-style: italic">#Split datasets into training and testing</span>
y_train<span style="color: #666666">=</span>to_categorical(y_train) <span style="color: #408080; font-style: italic">#Convert labels to categorical when using categorical cross entropy</span>
y_test<span style="color: #666666">=</span>to_categorical(y_test)
<span style="color: #008000; font-weight: bold">del</span> temp1,temp2,temp
<span style="color: #408080; font-style: italic"># %%</span>
<span style="color: #408080; font-style: italic"># Define tunable parameters&quot;</span>
eta<span style="color: #666666">=</span>np<span style="color: #666666">.</span>logspace(<span style="color: #666666">-3</span>,<span style="color: #666666">-1</span>,<span style="color: #666666">3</span>) <span style="color: #408080; font-style: italic">#Define vector of learning rates (parameter to SGD optimiser)</span>
lamda<span style="color: #666666">=0.01</span> <span style="color: #408080; font-style: italic">#Define hyperparameter</span>
n_layers<span style="color: #666666">=2</span> <span style="color: #408080; font-style: italic">#Define number of hidden layers in the model</span>
n_neuron<span style="color: #666666">=</span>np<span style="color: #666666">.</span>logspace(<span style="color: #666666">0</span>,<span style="color: #666666">3</span>,<span style="color: #666666">4</span>,dtype<span style="color: #666666">=</span><span style="color: #008000">int</span>) <span style="color: #408080; font-style: italic">#Define number of neurons per layer</span>
epochs<span style="color: #666666">=100</span> <span style="color: #408080; font-style: italic">#Number of reiterations over the input data</span>
batch_size<span style="color: #666666">=100</span> <span style="color: #408080; font-style: italic">#Number of samples per gradient update</span>
<span style="color: #408080; font-style: italic"># %%</span>
<span style="color: #BA2121; font-style: italic">&quot;&quot;&quot;Define function to return Deep Neural Network model&quot;&quot;&quot;</span>
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">NN_model</span>(inputsize,n_layers,n_neuron,eta,lamda):
model<span style="color: #666666">=</span>Sequential()
<span style="color: #008000; font-weight: bold">for</span> i <span style="color: #AA22FF; font-weight: bold">in</span> <span style="color: #008000">range</span>(n_layers): <span style="color: #408080; font-style: italic">#Run loop to add hidden layers to the model</span>
<span style="color: #008000; font-weight: bold">if</span> (i<span style="color: #666666">==0</span>): <span style="color: #408080; font-style: italic">#First layer requires input dimensions</span>
model<span style="color: #666666">.</span>add(Dense(n_neuron,activation<span style="color: #666666">=</span><span style="color: #BA2121">&#39;relu&#39;</span>,kernel_regularizer<span style="color: #666666">=</span>regularizers<span style="color: #666666">.</span>l2(lamda),input_dim<span style="color: #666666">=</span>inputsize))
<span style="color: #008000; font-weight: bold">else</span>: <span style="color: #408080; font-style: italic">#Subsequent layers are capable of automatic shape inferencing</span>
model<span style="color: #666666">.</span>add(Dense(n_neuron,activation<span style="color: #666666">=</span><span style="color: #BA2121">&#39;relu&#39;</span>,kernel_regularizer<span style="color: #666666">=</span>regularizers<span style="color: #666666">.</span>l2(lamda)))
model<span style="color: #666666">.</span>add(Dense(<span style="color: #666666">2</span>,activation<span style="color: #666666">=</span><span style="color: #BA2121">&#39;softmax&#39;</span>)) <span style="color: #408080; font-style: italic">#2 outputs - ordered and disordered (softmax for prob)</span>
sgd<span style="color: #666666">=</span>optimizers<span style="color: #666666">.</span>SGD(lr<span style="color: #666666">=</span>eta)
model<span style="color: #666666">.</span>compile(loss<span style="color: #666666">=</span><span style="color: #BA2121">&#39;categorical_crossentropy&#39;</span>,optimizer<span style="color: #666666">=</span>sgd,metrics<span style="color: #666666">=</span>[<span style="color: #BA2121">&#39;accuracy&#39;</span>])
<span style="color: #008000; font-weight: bold">return</span> model
Train_accuracy<span style="color: #666666">=</span>np<span style="color: #666666">.</span>zeros((<span style="color: #008000">len</span>(n_neuron),<span style="color: #008000">len</span>(eta))) <span style="color: #408080; font-style: italic">#Define matrices to store accuracy scores as a function</span>
Test_accuracy<span style="color: #666666">=</span>np<span style="color: #666666">.</span>zeros((<span style="color: #008000">len</span>(n_neuron),<span style="color: #008000">len</span>(eta))) <span style="color: #408080; font-style: italic">#of learning rate and number of hidden neurons for </span>
<span style="color: #008000; font-weight: bold">for</span> i <span style="color: #AA22FF; font-weight: bold">in</span> <span style="color: #008000">range</span>(<span style="color: #008000">len</span>(n_neuron)): <span style="color: #408080; font-style: italic">#run loops over hidden neurons and learning rates to calculate </span>
<span style="color: #008000; font-weight: bold">for</span> j <span style="color: #AA22FF; font-weight: bold">in</span> <span style="color: #008000">range</span>(<span style="color: #008000">len</span>(eta)): <span style="color: #408080; font-style: italic">#accuracy scores </span>
DNN_model<span style="color: #666666">=</span>NN_model(X_train<span style="color: #666666">.</span>shape[<span style="color: #666666">1</span>],n_layers,n_neuron[i],eta[j],lamda)
DNN_model<span style="color: #666666">.</span>fit(X_train,y_train,epochs<span style="color: #666666">=</span>epochs,batch_size<span style="color: #666666">=</span>batch_size,verbose<span style="color: #666666">=1</span>)
Train_accuracy[i,j]<span style="color: #666666">=</span>DNN_model<span style="color: #666666">.</span>evaluate(X_train,y_train)[<span style="color: #666666">1</span>]
Test_accuracy[i,j]<span style="color: #666666">=</span>DNN_model<span style="color: #666666">.</span>evaluate(X_test,y_test)[<span style="color: #666666">1</span>]
<span style="color: #008000; font-weight: bold">def</span> <span style="color: #0000FF">plot_data</span>(x,y,data,title<span style="color: #666666">=</span><span style="color: #008000; font-weight: bold">None</span>):
<span style="color: #408080; font-style: italic"># plot results</span>
fontsize<span style="color: #666666">=16</span>
fig <span style="color: #666666">=</span> plt<span style="color: #666666">.</span>figure()
ax <span style="color: #666666">=</span> fig<span style="color: #666666">.</span>add_subplot(<span style="color: #666666">111</span>)
cax <span style="color: #666666">=</span> ax<span style="color: #666666">.</span>matshow(data, interpolation<span style="color: #666666">=</span><span style="color: #BA2121">&#39;nearest&#39;</span>, vmin<span style="color: #666666">=0</span>, vmax<span style="color: #666666">=1</span>)
cbar<span style="color: #666666">=</span>fig<span style="color: #666666">.</span>colorbar(cax)
cbar<span style="color: #666666">.</span>ax<span style="color: #666666">.</span>set_ylabel(<span style="color: #BA2121">&#39;accuracy (%)&#39;</span>,rotation<span style="color: #666666">=90</span>,fontsize<span style="color: #666666">=</span>fontsize)
cbar<span style="color: #666666">.</span>set_ticks([<span style="color: #666666">0</span>,<span style="color: #666666">.2</span>,<span style="color: #666666">.4</span>,<span style="color: #666666">0.6</span>,<span style="color: #666666">0.8</span>,<span style="color: #666666">1.0</span>])
cbar<span style="color: #666666">.</span>set_ticklabels([<span style="color: #BA2121">&#39;0%&#39;</span>,<span style="color: #BA2121">&#39;20%&#39;</span>,<span style="color: #BA2121">&#39;40%&#39;</span>,<span style="color: #BA2121">&#39;60%&#39;</span>,<span style="color: #BA2121">&#39;80%&#39;</span>,<span style="color: #BA2121">&#39;100%&#39;</span>])
<span style="color: #408080; font-style: italic"># put text on matrix elements</span>
<span style="color: #008000; font-weight: bold">for</span> i, x_val <span style="color: #AA22FF; font-weight: bold">in</span> <span style="color: #008000">enumerate</span>(np<span style="color: #666666">.</span>arange(<span style="color: #008000">len</span>(x))):
<span style="color: #008000; font-weight: bold">for</span> j, y_val <span style="color: #AA22FF; font-weight: bold">in</span> <span style="color: #008000">enumerate</span>(np<span style="color: #666666">.</span>arange(<span style="color: #008000">len</span>(y))):
c <span style="color: #666666">=</span> <span style="color: #BA2121">&quot;$</span><span style="color: #BB6688; font-weight: bold">{0:.1f}</span><span style="color: #BB6622; font-weight: bold">\\</span><span style="color: #BA2121">%$&quot;</span><span style="color: #666666">.</span>format( <span style="color: #666666">100*</span>data[j,i])
ax<span style="color: #666666">.</span>text(x_val, y_val, c, va<span style="color: #666666">=</span><span style="color: #BA2121">&#39;center&#39;</span>, ha<span style="color: #666666">=</span><span style="color: #BA2121">&#39;center&#39;</span>)
<span style="color: #408080; font-style: italic"># convert axis vaues to to string labels</span>
x<span style="color: #666666">=</span>[<span style="color: #008000">str</span>(i) <span style="color: #008000; font-weight: bold">for</span> i <span style="color: #AA22FF; font-weight: bold">in</span> x]
y<span style="color: #666666">=</span>[<span style="color: #008000">str</span>(i) <span style="color: #008000; font-weight: bold">for</span> i <span style="color: #AA22FF; font-weight: bold">in</span> y]
ax<span style="color: #666666">.</span>set_xticklabels([<span style="color: #BA2121">&#39;&#39;</span>]<span style="color: #666666">+</span>x)
ax<span style="color: #666666">.</span>set_yticklabels([<span style="color: #BA2121">&#39;&#39;</span>]<span style="color: #666666">+</span>y)
ax<span style="color: #666666">.</span>set_xlabel(<span style="color: #BA2121">&#39;$</span><span style="color: #BB6622; font-weight: bold">\\</span><span style="color: #BA2121">mathrm{learning</span><span style="color: #BB6622; font-weight: bold">\\</span><span style="color: #BA2121"> rate}$&#39;</span>,fontsize<span style="color: #666666">=</span>fontsize)
ax<span style="color: #666666">.</span>set_ylabel(<span style="color: #BA2121">&#39;$</span><span style="color: #BB6622; font-weight: bold">\\</span><span style="color: #BA2121">mathrm{hidden</span><span style="color: #BB6622; font-weight: bold">\\</span><span style="color: #BA2121"> neurons}$&#39;</span>,fontsize<span style="color: #666666">=</span>fontsize)
<span style="color: #008000; font-weight: bold">if</span> title <span style="color: #AA22FF; font-weight: bold">is</span> <span style="color: #AA22FF; font-weight: bold">not</span> <span style="color: #008000; font-weight: bold">None</span>:
ax<span style="color: #666666">.</span>set_title(title)
plt<span style="color: #666666">.</span>tight_layout()
plt<span style="color: #666666">.</span>show()
plot_data(eta,n_neuron,Train_accuracy, <span style="color: #BA2121">&#39;training&#39;</span>)
plot_data(eta,n_neuron,Test_accuracy, <span style="color: #BA2121">&#39;testing&#39;</span>)
</pre></div>
<p>
<p>
<!-- navigation buttons at the bottom of the page -->
<ul class="pagination">
<li><a href="._week41-bs035.html">&laquo;</a></li>
<li><a href="._week41-bs000.html">1</a></li>
<li><a href="">...</a></li>
<li><a href="._week41-bs028.html">29</a></li>
<li><a href="._week41-bs029.html">30</a></li>
<li><a href="._week41-bs030.html">31</a></li>
<li><a href="._week41-bs031.html">32</a></li>
<li><a href="._week41-bs032.html">33</a></li>
<li><a href="._week41-bs033.html">34</a></li>
<li><a href="._week41-bs034.html">35</a></li>
<li><a href="._week41-bs035.html">36</a></li>
<li class="active"><a href="._week41-bs036.html">37</a></li>
<li><a href="._week41-bs037.html">38</a></li>
<li><a href="._week41-bs038.html">39</a></li>
<li><a href="._week41-bs039.html">40</a></li>
<li><a href="._week41-bs040.html">41</a></li>
<li><a href="._week41-bs041.html">42</a></li>
<li><a href="._week41-bs042.html">43</a></li>
<li><a href="._week41-bs043.html">44</a></li>
<li><a href="._week41-bs044.html">45</a></li>
<li><a href="._week41-bs045.html">46</a></li>
<li><a href="">...</a></li>
<li><a href="._week41-bs071.html">72</a></li>
<li><a href="._week41-bs037.html">&raquo;</a></li>
</ul>
<!-- ------------------- end of main content --------------- -->
</div> <!-- end container -->
<!-- include javascript, jQuery *first* -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<!-- Bootstrap footer
<footer>
<a href="https://..."><img width="250" align=right src="https://..."></a>
</footer>
-->
<center style="font-size:80%">
<!-- copyright only on the titlepage -->
</center>
</body>
</html>