From ff08e04b6e3bac21c80f1f178d360b4d55da3cc8 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Tue, 2 Oct 2018 22:15:26 +0200 Subject: [PATCH] added tensorflow --- doc/pub/NeuralNet/html/._NeuralNet-bs000.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs001.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs002.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs003.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs004.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs005.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs006.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs007.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs008.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs009.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs010.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs011.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs012.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs013.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs014.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs015.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs016.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs017.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs018.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs019.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs020.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs021.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs022.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs023.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs024.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs025.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs026.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs027.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs028.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs029.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs030.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs031.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs032.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs033.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs034.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs035.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs036.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs037.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs038.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs039.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs040.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs041.html | 19 +- doc/pub/NeuralNet/html/._NeuralNet-bs042.html | 20 +- doc/pub/NeuralNet/html/._NeuralNet-bs043.html | 21 +- doc/pub/NeuralNet/html/._NeuralNet-bs044.html | 22 +- doc/pub/NeuralNet/html/._NeuralNet-bs045.html | 23 +- doc/pub/NeuralNet/html/._NeuralNet-bs046.html | 22 +- doc/pub/NeuralNet/html/._NeuralNet-bs047.html | 22 +- doc/pub/NeuralNet/html/._NeuralNet-bs048.html | 22 +- doc/pub/NeuralNet/html/._NeuralNet-bs049.html | 22 +- doc/pub/NeuralNet/html/._NeuralNet-bs050.html | 34 +- doc/pub/NeuralNet/html/._NeuralNet-bs051.html | 320 +++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs052.html | 340 +++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs053.html | 418 ++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs054.html | 352 ++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs055.html | 370 ++++++++++++ doc/pub/NeuralNet/html/NeuralNet-bs.html | 19 +- doc/pub/NeuralNet/html/NeuralNet-reveal.html | 451 ++++++++++++++- .../NeuralNet/html/NeuralNet-solarized.html | 457 ++++++++++++++- doc/pub/NeuralNet/html/NeuralNet.html | 457 ++++++++++++++- doc/pub/NeuralNet/ipynb/NeuralNet.ipynb | 541 +++++++++++++++++- .../ipynb/ipynb-NeuralNet-src.tar.gz | Bin 211 -> 211 bytes doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf | Bin 439537 -> 455569 bytes doc/src/NeuralNet/NeuralNet.do.txt | 2 +- 64 files changed, 4579 insertions(+), 154 deletions(-) create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs051.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs052.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs053.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs054.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs055.html diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs000.html b/doc/pub/NeuralNet/html/._NeuralNet-bs000.html index 5b3bcff7c..da168971c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs000.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs000.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -261,7 +274,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs001.html b/doc/pub/NeuralNet/html/._NeuralNet-bs001.html index e1cac0984..b5ad32372 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs001.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs001.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -246,7 +259,7 @@ a weight variable.
  • 10
  • 11
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs002.html b/doc/pub/NeuralNet/html/._NeuralNet-bs002.html index ffe1b4f1f..d8c58a5d8 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs002.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs002.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -296,7 +309,7 @@ humanities to life science and medicine.
  • 11
  • 12
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs003.html b/doc/pub/NeuralNet/html/._NeuralNet-bs003.html index af1f111d3..692933f0f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs003.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs003.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -261,7 +274,7 @@ methods we discussed earlier.
  • 12
  • 13
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs004.html b/doc/pub/NeuralNet/html/._NeuralNet-bs004.html index d37a79f78..1bc44423b 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs004.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs004.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -253,7 +266,7 @@ to all nodes in the subsequent layer, making this a so-called
  • 13
  • 14
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs005.html b/doc/pub/NeuralNet/html/._NeuralNet-bs005.html index 2dba0326c..b914e2ccf 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs005.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs005.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -262,7 +275,7 @@ recognition.
  • 14
  • 15
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs006.html b/doc/pub/NeuralNet/html/._NeuralNet-bs006.html index 40b377319..7c29a685c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs006.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs006.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -254,7 +267,7 @@ especially well-suited for handwriting and speech recognition.
  • 15
  • 16
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs007.html b/doc/pub/NeuralNet/html/._NeuralNet-bs007.html index 13c30f215..6526bfac9 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs007.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs007.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -255,7 +268,7 @@ type of NN due the unusual activation functions.
  • 16
  • 17
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs008.html b/doc/pub/NeuralNet/html/._NeuralNet-bs008.html index f879d2145..88085f60e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs008.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs008.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -253,7 +266,7 @@ Such networks are often called multilayer perceptrons (MLPs).
  • 17
  • 18
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs009.html b/doc/pub/NeuralNet/html/._NeuralNet-bs009.html index f1d0fdb2b..83f1eb816 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs009.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs009.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -258,7 +271,7 @@ as to not restrict the range of output values.
  • 18
  • 19
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs010.html b/doc/pub/NeuralNet/html/._NeuralNet-bs010.html index bf352bfa8..a9d34b33e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs010.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs010.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -259,7 +272,7 @@ of the outputs of all neurons in the previous layer.
  • 19
  • 20
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs011.html b/doc/pub/NeuralNet/html/._NeuralNet-bs011.html index ce610dcfc..5d2d2bc8c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs011.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs011.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -288,7 +301,7 @@ is obtained.
  • 20
  • 21
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs012.html b/doc/pub/NeuralNet/html/._NeuralNet-bs012.html index 7a7cb1d49..e176eacef 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs012.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs012.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -270,7 +283,7 @@ $$
  • 21
  • 22
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs013.html b/doc/pub/NeuralNet/html/._NeuralNet-bs013.html index 95691f436..8fd346e29 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs013.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs013.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -261,7 +274,7 @@ variables are the input values \( x_n \).
  • 22
  • 23
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs014.html b/doc/pub/NeuralNet/html/._NeuralNet-bs014.html index a789902da..68330d629 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs014.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs014.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -270,7 +283,7 @@ flexibility of a neural network.
  • 23
  • 24
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs015.html b/doc/pub/NeuralNet/html/._NeuralNet-bs015.html index 7c3845e55..bb4744750 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs015.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs015.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -280,7 +293,7 @@ $$
  • 24
  • 25
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs016.html b/doc/pub/NeuralNet/html/._NeuralNet-bs016.html index ed32f39ef..256ec3d1a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs016.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs016.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -264,7 +277,7 @@ used as input to the activation functions. For each operation
  • 25
  • 26
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs017.html b/doc/pub/NeuralNet/html/._NeuralNet-bs017.html index 6c84bd78a..a24bb7121 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs017.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs017.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -258,7 +271,7 @@ for a FFNN to fulfill the universal approximation theorem
  • 26
  • 27
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs018.html b/doc/pub/NeuralNet/html/._NeuralNet-bs018.html index 773b51dce..d948ee651 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs018.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs018.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -266,7 +279,7 @@ $$
  • 27
  • 28
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs019.html b/doc/pub/NeuralNet/html/._NeuralNet-bs019.html index 06d7a51d3..3136a9de4 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs019.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs019.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -328,7 +341,7 @@ plt.show()
  • 28
  • 29
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs020.html b/doc/pub/NeuralNet/html/._NeuralNet-bs020.html index 8c473fb7b..dd8a3e604 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs020.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs020.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -279,7 +292,7 @@ like logistic regression or linear regression and their modifications on the oth
  • 29
  • 30
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs021.html b/doc/pub/NeuralNet/html/._NeuralNet-bs021.html index 41b3ece1f..b9444ef1e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs021.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs021.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -269,7 +282,7 @@ the potential of being universal approximators.
  • 30
  • 31
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs022.html b/doc/pub/NeuralNet/html/._NeuralNet-bs022.html index c4eadff0c..756587b22 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs022.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs022.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -275,7 +288,7 @@ classes.
  • 31
  • 32
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs023.html b/doc/pub/NeuralNet/html/._NeuralNet-bs023.html index f38b71774..a65de3cf6 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs023.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs023.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -280,7 +293,7 @@ $$
  • 32
  • 33
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs024.html b/doc/pub/NeuralNet/html/._NeuralNet-bs024.html index f450ff11f..f9cc99057 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs024.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs024.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -263,7 +276,7 @@ $$
  • 33
  • 34
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs025.html b/doc/pub/NeuralNet/html/._NeuralNet-bs025.html index 604adde41..5713df15a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs025.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs025.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -266,7 +279,7 @@ $$
  • 34
  • 35
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs026.html b/doc/pub/NeuralNet/html/._NeuralNet-bs026.html index eaf25bb25..68448e75b 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs026.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs026.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -291,7 +304,7 @@ $$
  • 35
  • 36
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs027.html b/doc/pub/NeuralNet/html/._NeuralNet-bs027.html index eb9fe06d5..9677c8ef3 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs027.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs027.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -258,7 +271,7 @@ That is, the error \( \delta_j^L \) is exactly equal to the rate of change of th
  • 36
  • 37
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs028.html b/doc/pub/NeuralNet/html/._NeuralNet-bs028.html index d1dbc3f2d..7b1809730 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs028.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs028.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -301,7 +314,7 @@ one \( L-1 \) in terms of the errors in the final output layer.
  • 37
  • 38
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs029.html b/doc/pub/NeuralNet/html/._NeuralNet-bs029.html index 827f88dff..979c8097d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs029.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs029.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -273,7 +286,7 @@ We are now ready to set up the algorithm for back propagation and learning the w
  • 38
  • 39
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs030.html b/doc/pub/NeuralNet/html/._NeuralNet-bs030.html index 892ec7e70..4c148d3de 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs030.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs030.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -317,7 +330,7 @@ Here it is convenient to use stochastic radient descent with mini-batches with a
  • 39
  • 40
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs031.html b/doc/pub/NeuralNet/html/._NeuralNet-bs031.html index aabed150b..8b3ef453f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs031.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs031.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -279,7 +292,7 @@ of our network.
  • 40
  • 41
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs032.html b/doc/pub/NeuralNet/html/._NeuralNet-bs032.html index 4c9754428..44a65b22a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs032.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs032.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -302,7 +315,7 @@ We leave it as an exercise in project 2 to derive these equations.
  • 41
  • 42
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs033.html b/doc/pub/NeuralNet/html/._NeuralNet-bs033.html index e6c0d33b3..c07325e1c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs033.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs033.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -257,7 +270,7 @@ One can identify a set of key steps when using neural networks to solve supervis
  • 42
  • 43
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs034.html b/doc/pub/NeuralNet/html/._NeuralNet-bs034.html index aefa27168..3dfb98d10 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs034.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs034.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -336,7 +349,7 @@ plt.show()
  • 43
  • 44
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs035.html b/doc/pub/NeuralNet/html/._NeuralNet-bs035.html index 3c3a54967..548530f68 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs035.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs035.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -290,7 +303,7 @@ X_train, X_test, Y_train, Y_test = train_tes
  • 44
  • 45
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs036.html b/doc/pub/NeuralNet/html/._NeuralNet-bs036.html index 7fd158bdc..fb571d82e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs036.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs036.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -287,7 +300,7 @@ which is inspired by probability theory (see logistic regression) and was most c
  • 45
  • 46
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs037.html b/doc/pub/NeuralNet/html/._NeuralNet-bs037.html index 0916e6c64..db12206fe 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs037.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs037.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -286,7 +299,7 @@ weights to the output layer.
  • 46
  • 47
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs038.html b/doc/pub/NeuralNet/html/._NeuralNet-bs038.html index 1b9625d0d..1609267e2 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs038.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs038.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -277,7 +290,7 @@ output_bias = np47
  • 48
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs039.html b/doc/pub/NeuralNet/html/._NeuralNet-bs039.html index b07644138..fcfeedb6a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs039.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs039.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -268,7 +281,7 @@ $$ a_{j}^{o} = \frac{\exp{(z_j^{o})}}
  • 48
  • 49
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs040.html b/doc/pub/NeuralNet/html/._NeuralNet-bs040.html index 3ea3e5c6e..3ffd9ef4e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs040.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs040.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -316,7 +329,7 @@ predictions = predict(X_train)
  • 49
  • 50
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs041.html b/doc/pub/NeuralNet/html/._NeuralNet-bs041.html index 8d44ccdd2..51252507d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs041.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs041.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -282,6 +295,8 @@ A full derivation is given in the appendix at the end.
  • 49
  • 50
  • 51
  • +
  • ...
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs042.html b/doc/pub/NeuralNet/html/._NeuralNet-bs042.html index 5d80351c0..8dfba7c3c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs042.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs042.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -276,6 +289,9 @@ This has two important benefits:
  • 49
  • 50
  • 51
  • +
  • 52
  • +
  • ...
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs043.html b/doc/pub/NeuralNet/html/._NeuralNet-bs043.html index f988a5716..bbd876bbb 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs043.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs043.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -271,6 +284,10 @@ calculate the gradient efficently.
  • 49
  • 50
  • 51
  • +
  • 52
  • +
  • 53
  • +
  • ...
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs044.html b/doc/pub/NeuralNet/html/._NeuralNet-bs044.html index 36af7d7a6..2c2944666 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs044.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs044.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -354,6 +367,11 @@ lmbd = 0.0149
  • 50
  • 51
  • +
  • 52
  • +
  • 53
  • +
  • 54
  • +
  • ...
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs045.html b/doc/pub/NeuralNet/html/._NeuralNet-bs045.html index 1b0ee8dc1..356ce9e6d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs045.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs045.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -256,6 +269,12 @@ Andrew Ng goes through some of these considerations in this 49
  • 50
  • 51
  • +
  • 52
  • +
  • 53
  • +
  • 54
  • +
  • 55
  • +
  • ...
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs046.html b/doc/pub/NeuralNet/html/._NeuralNet-bs046.html index ad3981533..c77fbd648 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs046.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs046.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -348,6 +361,11 @@ being realizations of this object with different hyperparameters. An implementat
  • 49
  • 50
  • 51
  • +
  • 52
  • +
  • 53
  • +
  • 54
  • +
  • 55
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs047.html b/doc/pub/NeuralNet/html/._NeuralNet-bs047.html index 756672e41..74fd9059d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs047.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs047.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -269,6 +282,11 @@ test_predict = dnn49
  • 50
  • 51
  • +
  • 52
  • +
  • 53
  • +
  • 54
  • +
  • 55
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs048.html b/doc/pub/NeuralNet/html/._NeuralNet-bs048.html index fe2a913f7..aa1b1245a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs048.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs048.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -308,6 +321,11 @@ plt.show()
  • 49
  • 50
  • 51
  • +
  • 52
  • +
  • 53
  • +
  • 54
  • +
  • 55
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs049.html b/doc/pub/NeuralNet/html/._NeuralNet-bs049.html index 00c317dea..83a22456f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs049.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs049.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -302,6 +315,11 @@ plt.show()
  • 49
  • 50
  • 51
  • +
  • 52
  • +
  • 53
  • +
  • 54
  • +
  • 55
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs050.html b/doc/pub/NeuralNet/html/._NeuralNet-bs050.html index 704140015..aaded931c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs050.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs050.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -218,10 +231,19 @@ MathJax.Hub.Config({ -

    And then with Tensorflow

    +

    Building neural networks in Tensorflow and Keras

    +Now we want to build on the experience gained from our neural network implementation in NumPy and scikit-learn +and use it to construct a neural network in Tensorflow. Once we have constructed a neural network in NumPy +and Tensorflow, building one in Keras is really quite trivial, though the performance may suffer. +

    +In our previous example we used only one hidden layer, and in this we will use two. From this it should be quite +clear how to build one using an arbitrary number of hidden layers, using data structures such as Python lists or +NumPy arrays. + +

    diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs051.html b/doc/pub/NeuralNet/html/._NeuralNet-bs051.html new file mode 100644 index 000000000..41244e26b --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs051.html @@ -0,0 +1,320 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Tensorflow

    + +

    +Tensorflow is an open source library machine learning library +developed by the Google Brain team for internal use. It was released +under the Apache 2.0 open source license in November 9, 2015. + +

    +Tensorflow is a computational framework that allows you to construct +machine learning models at different levels of abstraction, from +high-level, object-oriented APIs like Keras, down to the C++ kernels +that Tensorflow is built upon. The higher levels of abstraction are +simpler to use, but less flexible, and our choice of implementation +should reflect the problems we are trying to solve. + +

    +Tensorflow uses so-called graphs to represent your computation +in terms of the dependencies between individual operations, such that you first build a Tensorflow graph +to represent your model, and then create a Tensorflow session to run the graph. + +

    +In this guide we will analyze the same data as we did in our NumPy and +scikit-learn tutorial, gathered from the MNIST database of images. We +will give an introduction to the lower level Python Application +Program Interfaces (APIs), and see how we use them to build our graph. +Then we will build (effectively) the same graph in Keras, to see just +how simple solving a machine learning problem can be. + +

    +To install tensorflow on Unix/Linux systems, use pip as +

    + + +

    pip3 install tensorflow
    +
    +

    +and/or if you use anaconda, just write (or install from the graphical user interface) +

    + + +

    conda install tensorflow
    +
    +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs052.html b/doc/pub/NeuralNet/html/._NeuralNet-bs052.html new file mode 100644 index 000000000..7e4e010f9 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs052.html @@ -0,0 +1,340 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Collect and pre-process data

    + +

    + + +

    # import necessary packages
    +import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn import datasets
    +
    +
    +# ensure the same random numbers appear every time
    +np.random.seed(0)
    +
    +# display images in notebook
    +%matplotlib inline
    +plt.rcParams['figure.figsize'] = (12,12)
    +
    +
    +# download MNIST dataset
    +digits = datasets.load_digits()
    +
    +# define inputs and labels
    +inputs = digits.images
    +labels = digits.target
    +
    +print("inputs = (n_inputs, pixel_width, pixel_height) = " + str(inputs.shape))
    +print("labels = (n_inputs) = " + str(labels.shape))
    +
    +
    +# flatten the image
    +# the value -1 means dimension is inferred from the remaining dimensions: 8x8 = 64
    +n_inputs = len(inputs)
    +inputs = inputs.reshape(n_inputs, -1)
    +print("X = (n_inputs, n_features) = " + str(inputs.shape))
    +
    +
    +# choose some random images to display
    +indices = np.arange(n_inputs)
    +random_indices = np.random.choice(indices, size=5)
    +
    +for i, image in enumerate(digits.images[random_indices]):
    +    plt.subplot(1, 5, i+1)
    +    plt.axis('off')
    +    plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
    +    plt.title("Label: %d" % digits.target[random_indices[i]])
    +plt.show()
    +
    +

    + + +

    from keras.utils import to_categorical
    +from sklearn.model_selection import train_test_split
    +
    +# one-hot representation of labels
    +labels = to_categorical(labels)
    +
    +# split into train and test data
    +train_size = 0.8
    +test_size = 1 - train_size
    +X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size,
    +                                                    test_size=test_size)
    +
    +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs053.html b/doc/pub/NeuralNet/html/._NeuralNet-bs053.html new file mode 100644 index 000000000..8a497167e --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs053.html @@ -0,0 +1,418 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Using TensorFlow backend

    + +
      +
    1. Define model and architecture
    2. +
    3. Choose cost function and optimizer
    4. +
    + +

    + + +

    import tensorflow as tf
    +
    +class NeuralNetworkTensorflow:
    +    def __init__(
    +        self,
    +        X_train,
    +        Y_train,
    +        X_test,
    +        Y_test,
    +        n_neurons_layer1=100,
    +        n_neurons_layer2=50,
    +        n_categories=2,
    +        epochs=10,
    +        batch_size=100,
    +        eta=0.1,
    +        lmbd=0.0,
    +    ):
    +        
    +        # keep track of number of steps
    +        self.global_step = tf.Variable(0, dtype=tf.int32, trainable=False, name='global_step')
    +        
    +        self.X_train = X_train
    +        self.Y_train = Y_train
    +        self.X_test = X_test
    +        self.Y_test = Y_test
    +        
    +        self.n_inputs = X_train.shape[0]
    +        self.n_features = X_train.shape[1]
    +        self.n_neurons_layer1 = n_neurons_layer1
    +        self.n_neurons_layer2 = n_neurons_layer2
    +        self.n_categories = n_categories
    +        
    +        self.epochs = epochs
    +        self.batch_size = batch_size
    +        self.iterations = self.n_inputs // self.batch_size
    +        self.eta = eta
    +        self.lmbd = lmbd
    +        
    +        # build network piece by piece
    +        # name scopes (with) are used to enforce creation of new variables
    +        # https://www.tensorflow.org/guide/variables
    +        self.create_placeholders()
    +        self.create_DNN()
    +        self.create_loss()
    +        self.create_optimiser()
    +        self.create_accuracy()
    +    
    +    def create_placeholders(self):
    +        # placeholders are fine here, but "Datasets" are the preferred method
    +        # of streaming data into a model
    +        with tf.name_scope('data'):
    +            self.X = tf.placeholder(tf.float32, shape=(None, self.n_features), name='X_data')
    +            self.Y = tf.placeholder(tf.float32, shape=(None, self.n_categories), name='Y_data')
    +    
    +    def create_DNN(self):
    +        with tf.name_scope('DNN'):
    +            # the weights are stored to calculate regularization loss later
    +            
    +            # Fully connected layer 1
    +            self.W_fc1 = self.weight_variable([self.n_features, self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            b_fc1 = self.bias_variable([self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            a_fc1 = tf.nn.sigmoid(tf.matmul(self.X, self.W_fc1) + b_fc1)
    +            
    +            # Fully connected layer 2
    +            self.W_fc2 = self.weight_variable([self.n_neurons_layer1, self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            b_fc2 = self.bias_variable([self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            a_fc2 = tf.nn.sigmoid(tf.matmul(a_fc1, self.W_fc2) + b_fc2)
    +            
    +            # Output layer
    +            self.W_out = self.weight_variable([self.n_neurons_layer2, self.n_categories], name='out', dtype=tf.float32)
    +            b_out = self.bias_variable([self.n_categories], name='out', dtype=tf.float32)
    +            self.z_out = tf.matmul(a_fc2, self.W_out) + b_out
    +    
    +    def create_loss(self):
    +        with tf.name_scope('loss'):
    +            softmax_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=self.Y, logits=self.z_out))
    +            
    +            regularizer_loss_fc1 = tf.nn.l2_loss(self.W_fc1)
    +            regularizer_loss_fc2 = tf.nn.l2_loss(self.W_fc2)
    +            regularizer_loss_out = tf.nn.l2_loss(self.W_out)
    +            regularizer_loss = self.lmbd*(regularizer_loss_fc1 + regularizer_loss_fc2 + regularizer_loss_out)
    +            
    +            self.loss = softmax_loss + regularizer_loss
    +
    +    def create_accuracy(self):
    +        with tf.name_scope('accuracy'):
    +            probabilities = tf.nn.softmax(self.z_out)
    +            predictions = tf.argmax(probabilities, axis=1)
    +            labels = tf.argmax(self.Y, axis=1)
    +            
    +            correct_predictions = tf.equal(predictions, labels)
    +            correct_predictions = tf.cast(correct_predictions, tf.float32)
    +            self.accuracy = tf.reduce_mean(correct_predictions)
    +    
    +    def create_optimiser(self):
    +        with tf.name_scope('optimizer'):
    +            self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.eta).minimize(self.loss, global_step=self.global_step)
    +            
    +    def weight_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.truncated_normal(shape, stddev=0.1)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def bias_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.constant(0.1, shape=shape)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def fit(self):
    +        data_indices = np.arange(self.n_inputs)
    +
    +        with tf.Session() as sess:
    +            sess.run(tf.global_variables_initializer())
    +            for i in range(self.epochs):
    +                for j in range(self.iterations):
    +                    chosen_datapoints = np.random.choice(data_indices, size=self.batch_size, replace=False)
    +                    batch_X, batch_Y = self.X_train[chosen_datapoints], self.Y_train[chosen_datapoints]
    +            
    +                    sess.run([DNN.loss, DNN.optimizer],
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    accuracy = sess.run(DNN.accuracy,
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    step = sess.run(DNN.global_step)
    +    
    +            self.train_loss, self.train_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_train,
    +                           DNN.Y: self.Y_train})
    +        
    +            self.test_loss, self.test_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_test,
    +                           DNN.Y: self.Y_test})
    +
    +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs054.html b/doc/pub/NeuralNet/html/._NeuralNet-bs054.html new file mode 100644 index 000000000..7922ab7ba --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs054.html @@ -0,0 +1,352 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Optimizing and using gradient descent

    + +

    + + +

    epochs = 100
    +batch_size = 100
    +n_neurons_layer1 = 100
    +n_neurons_layer2 = 50
    +n_categories = 10
    +
    +eta_vals = np.logspace(-5, 1, 7)
    +lmbd_vals = np.logspace(-5, 1, 7)
    +
    +

    + + +

    DNN_tf = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = NeuralNetworkTensorflow(X_train, Y_train, X_test, Y_test,
    +                                      n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                      epochs=epochs, batch_size=batch_size, eta=eta, lmbd=lmbd)
    +        DNN.fit()
    +        
    +        DNN_tf[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % DNN.test_accuracy)
    +        print()
    +        
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_tf[i][j]
    +
    +        train_accuracy[i][j] = DNN.train_accuracy
    +        test_accuracy[i][j] = DNN.test_accuracy
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +

    + + +

    # optional
    +# we can use log files to visualize our graph in Tensorboard
    +writer = tf.summary.FileWriter('logs/')
    +writer.add_graph(tf.get_default_graph())
    +
    +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs055.html b/doc/pub/NeuralNet/html/._NeuralNet-bs055.html new file mode 100644 index 000000000..b08124b41 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs055.html @@ -0,0 +1,370 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Using Keras

    + +

    +Keras is a high level neural network +that supports Tensorflow, CTNK and Theano as backends. +If you have Tensorflow installed Keras is available through the tf.keras module. +If you have Anaconda installed you may run the following command +

    + + +

    conda install keras
    +
    +

    +Alternatively, if you have Tensorflow or one of the other supported backends install you may use the pip package manager: + +

    + + +

    pip3 install keras
    +
    +

    +or look up the instructions here. + +

    + + +

    from keras.models import Sequential
    +from keras.layers import Dense
    +from keras.regularizers import l2
    +from keras.optimizers import SGD
    +
    +def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):
    +    model = Sequential()
    +    model.add(Dense(n_neurons_layer1, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_neurons_layer2, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_categories, activation='softmax'))
    +    
    +    sgd = SGD(lr=eta)
    +    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    +    
    +    return model
    +
    +

    + + +

    DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                         eta=eta, lmbd=lmbd)
    +        DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)
    +        scores = DNN.evaluate(X_test, Y_test)
    +        
    +        DNN_keras[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % scores[1])
    +        print()
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_keras[i][j]
    +
    +        train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]
    +        test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +

    + +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/NeuralNet-bs.html b/doc/pub/NeuralNet/html/NeuralNet-bs.html index 5b3bcff7c..da168971c 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-bs.html +++ b/doc/pub/NeuralNet/html/NeuralNet-bs.html @@ -115,7 +115,15 @@ Automatically generated HTML file from DocOnce source None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -202,7 +210,12 @@ MathJax.Hub.Config({
  • Evaluate model performance on test data
  • Adjust hyperparameters (if necessary, network architecture
  • scikit-learn implementation
  • -
  • And then with Tensorflow
  • +
  • Building neural networks in Tensorflow and Keras
  • +
  • Tensorflow
  • +
  • Collect and pre-process data
  • +
  • Using TensorFlow backend
  • +
  • Optimizing and using gradient descent
  • +
  • Using Keras
  • @@ -261,7 +274,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 51
  • +
  • 56
  • »
  • diff --git a/doc/pub/NeuralNet/html/NeuralNet-reveal.html b/doc/pub/NeuralNet/html/NeuralNet-reveal.html index b7d63f645..a689e890e 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-reveal.html +++ b/doc/pub/NeuralNet/html/NeuralNet-reveal.html @@ -2334,7 +2334,456 @@ plt.show()
    -

    And then with Tensorflow

    +

    Building neural networks in Tensorflow and Keras

    + +

    +Now we want to build on the experience gained from our neural network implementation in NumPy and scikit-learn +and use it to construct a neural network in Tensorflow. Once we have constructed a neural network in NumPy +and Tensorflow, building one in Keras is really quite trivial, though the performance may suffer. + +

    +In our previous example we used only one hidden layer, and in this we will use two. From this it should be quite +clear how to build one using an arbitrary number of hidden layers, using data structures such as Python lists or +NumPy arrays. +

    + + +
    +

    Tensorflow

    + +

    +Tensorflow is an open source library machine learning library +developed by the Google Brain team for internal use. It was released +under the Apache 2.0 open source license in November 9, 2015. + +

    +Tensorflow is a computational framework that allows you to construct +machine learning models at different levels of abstraction, from +high-level, object-oriented APIs like Keras, down to the C++ kernels +that Tensorflow is built upon. The higher levels of abstraction are +simpler to use, but less flexible, and our choice of implementation +should reflect the problems we are trying to solve. + +

    +Tensorflow uses so-called graphs to represent your computation +in terms of the dependencies between individual operations, such that you first build a Tensorflow graph +to represent your model, and then create a Tensorflow session to run the graph. + +

    +In this guide we will analyze the same data as we did in our NumPy and +scikit-learn tutorial, gathered from the MNIST database of images. We +will give an introduction to the lower level Python Application +Program Interfaces (APIs), and see how we use them to build our graph. +Then we will build (effectively) the same graph in Keras, to see just +how simple solving a machine learning problem can be. + +

    +To install tensorflow on Unix/Linux systems, use pip as +

    + + +

    pip3 install tensorflow
    +
    +

    +and/or if you use anaconda, just write (or install from the graphical user interface) +

    + + +

    conda install tensorflow
    +
    +
    + + +
    +

    Collect and pre-process data

    + +

    + + +

    # import necessary packages
    +import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn import datasets
    +
    +
    +# ensure the same random numbers appear every time
    +np.random.seed(0)
    +
    +# display images in notebook
    +%matplotlib inline
    +plt.rcParams['figure.figsize'] = (12,12)
    +
    +
    +# download MNIST dataset
    +digits = datasets.load_digits()
    +
    +# define inputs and labels
    +inputs = digits.images
    +labels = digits.target
    +
    +print("inputs = (n_inputs, pixel_width, pixel_height) = " + str(inputs.shape))
    +print("labels = (n_inputs) = " + str(labels.shape))
    +
    +
    +# flatten the image
    +# the value -1 means dimension is inferred from the remaining dimensions: 8x8 = 64
    +n_inputs = len(inputs)
    +inputs = inputs.reshape(n_inputs, -1)
    +print("X = (n_inputs, n_features) = " + str(inputs.shape))
    +
    +
    +# choose some random images to display
    +indices = np.arange(n_inputs)
    +random_indices = np.random.choice(indices, size=5)
    +
    +for i, image in enumerate(digits.images[random_indices]):
    +    plt.subplot(1, 5, i+1)
    +    plt.axis('off')
    +    plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
    +    plt.title("Label: %d" % digits.target[random_indices[i]])
    +plt.show()
    +
    +

    + + +

    from keras.utils import to_categorical
    +from sklearn.model_selection import train_test_split
    +
    +# one-hot representation of labels
    +labels = to_categorical(labels)
    +
    +# split into train and test data
    +train_size = 0.8
    +test_size = 1 - train_size
    +X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size,
    +                                                    test_size=test_size)
    +
    +
    + + +
    +

    Using TensorFlow backend

    + +
      +

    1. Define model and architecture
    2. +

    3. Choose cost function and optimizer
    4. +
    +

    + + +

    import tensorflow as tf
    +
    +class NeuralNetworkTensorflow:
    +    def __init__(
    +        self,
    +        X_train,
    +        Y_train,
    +        X_test,
    +        Y_test,
    +        n_neurons_layer1=100,
    +        n_neurons_layer2=50,
    +        n_categories=2,
    +        epochs=10,
    +        batch_size=100,
    +        eta=0.1,
    +        lmbd=0.0,
    +    ):
    +        
    +        # keep track of number of steps
    +        self.global_step = tf.Variable(0, dtype=tf.int32, trainable=False, name='global_step')
    +        
    +        self.X_train = X_train
    +        self.Y_train = Y_train
    +        self.X_test = X_test
    +        self.Y_test = Y_test
    +        
    +        self.n_inputs = X_train.shape[0]
    +        self.n_features = X_train.shape[1]
    +        self.n_neurons_layer1 = n_neurons_layer1
    +        self.n_neurons_layer2 = n_neurons_layer2
    +        self.n_categories = n_categories
    +        
    +        self.epochs = epochs
    +        self.batch_size = batch_size
    +        self.iterations = self.n_inputs // self.batch_size
    +        self.eta = eta
    +        self.lmbd = lmbd
    +        
    +        # build network piece by piece
    +        # name scopes (with) are used to enforce creation of new variables
    +        # https://www.tensorflow.org/guide/variables
    +        self.create_placeholders()
    +        self.create_DNN()
    +        self.create_loss()
    +        self.create_optimiser()
    +        self.create_accuracy()
    +    
    +    def create_placeholders(self):
    +        # placeholders are fine here, but "Datasets" are the preferred method
    +        # of streaming data into a model
    +        with tf.name_scope('data'):
    +            self.X = tf.placeholder(tf.float32, shape=(None, self.n_features), name='X_data')
    +            self.Y = tf.placeholder(tf.float32, shape=(None, self.n_categories), name='Y_data')
    +    
    +    def create_DNN(self):
    +        with tf.name_scope('DNN'):
    +            # the weights are stored to calculate regularization loss later
    +            
    +            # Fully connected layer 1
    +            self.W_fc1 = self.weight_variable([self.n_features, self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            b_fc1 = self.bias_variable([self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            a_fc1 = tf.nn.sigmoid(tf.matmul(self.X, self.W_fc1) + b_fc1)
    +            
    +            # Fully connected layer 2
    +            self.W_fc2 = self.weight_variable([self.n_neurons_layer1, self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            b_fc2 = self.bias_variable([self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            a_fc2 = tf.nn.sigmoid(tf.matmul(a_fc1, self.W_fc2) + b_fc2)
    +            
    +            # Output layer
    +            self.W_out = self.weight_variable([self.n_neurons_layer2, self.n_categories], name='out', dtype=tf.float32)
    +            b_out = self.bias_variable([self.n_categories], name='out', dtype=tf.float32)
    +            self.z_out = tf.matmul(a_fc2, self.W_out) + b_out
    +    
    +    def create_loss(self):
    +        with tf.name_scope('loss'):
    +            softmax_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=self.Y, logits=self.z_out))
    +            
    +            regularizer_loss_fc1 = tf.nn.l2_loss(self.W_fc1)
    +            regularizer_loss_fc2 = tf.nn.l2_loss(self.W_fc2)
    +            regularizer_loss_out = tf.nn.l2_loss(self.W_out)
    +            regularizer_loss = self.lmbd*(regularizer_loss_fc1 + regularizer_loss_fc2 + regularizer_loss_out)
    +            
    +            self.loss = softmax_loss + regularizer_loss
    +
    +    def create_accuracy(self):
    +        with tf.name_scope('accuracy'):
    +            probabilities = tf.nn.softmax(self.z_out)
    +            predictions = tf.argmax(probabilities, axis=1)
    +            labels = tf.argmax(self.Y, axis=1)
    +            
    +            correct_predictions = tf.equal(predictions, labels)
    +            correct_predictions = tf.cast(correct_predictions, tf.float32)
    +            self.accuracy = tf.reduce_mean(correct_predictions)
    +    
    +    def create_optimiser(self):
    +        with tf.name_scope('optimizer'):
    +            self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.eta).minimize(self.loss, global_step=self.global_step)
    +            
    +    def weight_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.truncated_normal(shape, stddev=0.1)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def bias_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.constant(0.1, shape=shape)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def fit(self):
    +        data_indices = np.arange(self.n_inputs)
    +
    +        with tf.Session() as sess:
    +            sess.run(tf.global_variables_initializer())
    +            for i in range(self.epochs):
    +                for j in range(self.iterations):
    +                    chosen_datapoints = np.random.choice(data_indices, size=self.batch_size, replace=False)
    +                    batch_X, batch_Y = self.X_train[chosen_datapoints], self.Y_train[chosen_datapoints]
    +            
    +                    sess.run([DNN.loss, DNN.optimizer],
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    accuracy = sess.run(DNN.accuracy,
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    step = sess.run(DNN.global_step)
    +    
    +            self.train_loss, self.train_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_train,
    +                           DNN.Y: self.Y_train})
    +        
    +            self.test_loss, self.test_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_test,
    +                           DNN.Y: self.Y_test})
    +
    +
    + + +
    +

    Optimizing and using gradient descent

    + +

    + + +

    epochs = 100
    +batch_size = 100
    +n_neurons_layer1 = 100
    +n_neurons_layer2 = 50
    +n_categories = 10
    +
    +eta_vals = np.logspace(-5, 1, 7)
    +lmbd_vals = np.logspace(-5, 1, 7)
    +
    +

    + + +

    DNN_tf = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = NeuralNetworkTensorflow(X_train, Y_train, X_test, Y_test,
    +                                      n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                      epochs=epochs, batch_size=batch_size, eta=eta, lmbd=lmbd)
    +        DNN.fit()
    +        
    +        DNN_tf[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % DNN.test_accuracy)
    +        print()
    +        
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_tf[i][j]
    +
    +        train_accuracy[i][j] = DNN.train_accuracy
    +        test_accuracy[i][j] = DNN.test_accuracy
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +

    + + +

    # optional
    +# we can use log files to visualize our graph in Tensorboard
    +writer = tf.summary.FileWriter('logs/')
    +writer.add_graph(tf.get_default_graph())
    +
    +
    + + +
    +

    Using Keras

    + +

    +Keras is a high level neural network +that supports Tensorflow, CTNK and Theano as backends. +If you have Tensorflow installed Keras is available through the tf.keras module. +If you have Anaconda installed you may run the following command +

    + + +

    conda install keras
    +
    +

    +Alternatively, if you have Tensorflow or one of the other supported backends install you may use the pip package manager: + +

    + + +

    pip3 install keras
    +
    +

    +or look up the instructions here. + +

    + + +

    from keras.models import Sequential
    +from keras.layers import Dense
    +from keras.regularizers import l2
    +from keras.optimizers import SGD
    +
    +def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):
    +    model = Sequential()
    +    model.add(Dense(n_neurons_layer1, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_neurons_layer2, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_categories, activation='softmax'))
    +    
    +    sgd = SGD(lr=eta)
    +    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    +    
    +    return model
    +
    +

    + + +

    DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                         eta=eta, lmbd=lmbd)
    +        DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)
    +        scores = DNN.evaluate(X_test, Y_test)
    +        
    +        DNN_keras[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % scores[1])
    +        print()
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_keras[i][j]
    +
    +        train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]
    +        test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    diff --git a/doc/pub/NeuralNet/html/NeuralNet-solarized.html b/doc/pub/NeuralNet/html/NeuralNet-solarized.html index a7d903ae5..34459708f 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-solarized.html +++ b/doc/pub/NeuralNet/html/NeuralNet-solarized.html @@ -135,7 +135,15 @@ div { text-align: justify; text-justify: inter-word; } None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -2175,8 +2183,453 @@ plt.show()











    -

    And then with Tensorflow

    +

    Building neural networks in Tensorflow and Keras

    +

    +Now we want to build on the experience gained from our neural network implementation in NumPy and scikit-learn +and use it to construct a neural network in Tensorflow. Once we have constructed a neural network in NumPy +and Tensorflow, building one in Keras is really quite trivial, though the performance may suffer. + +

    +In our previous example we used only one hidden layer, and in this we will use two. From this it should be quite +clear how to build one using an arbitrary number of hidden layers, using data structures such as Python lists or +NumPy arrays. + +

    +









    + +

    Tensorflow

    + +

    +Tensorflow is an open source library machine learning library +developed by the Google Brain team for internal use. It was released +under the Apache 2.0 open source license in November 9, 2015. + +

    +Tensorflow is a computational framework that allows you to construct +machine learning models at different levels of abstraction, from +high-level, object-oriented APIs like Keras, down to the C++ kernels +that Tensorflow is built upon. The higher levels of abstraction are +simpler to use, but less flexible, and our choice of implementation +should reflect the problems we are trying to solve. + +

    +Tensorflow uses so-called graphs to represent your computation +in terms of the dependencies between individual operations, such that you first build a Tensorflow graph +to represent your model, and then create a Tensorflow session to run the graph. + +

    +In this guide we will analyze the same data as we did in our NumPy and +scikit-learn tutorial, gathered from the MNIST database of images. We +will give an introduction to the lower level Python Application +Program Interfaces (APIs), and see how we use them to build our graph. +Then we will build (effectively) the same graph in Keras, to see just +how simple solving a machine learning problem can be. + +

    +To install tensorflow on Unix/Linux systems, use pip as +

    + + +

    pip3 install tensorflow
    +
    +

    +and/or if you use anaconda, just write (or install from the graphical user interface) +

    + + +

    conda install tensorflow
    +
    +

    +









    + +

    Collect and pre-process data

    + +

    + + +

    # import necessary packages
    +import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn import datasets
    +
    +
    +# ensure the same random numbers appear every time
    +np.random.seed(0)
    +
    +# display images in notebook
    +%matplotlib inline
    +plt.rcParams['figure.figsize'] = (12,12)
    +
    +
    +# download MNIST dataset
    +digits = datasets.load_digits()
    +
    +# define inputs and labels
    +inputs = digits.images
    +labels = digits.target
    +
    +print("inputs = (n_inputs, pixel_width, pixel_height) = " + str(inputs.shape))
    +print("labels = (n_inputs) = " + str(labels.shape))
    +
    +
    +# flatten the image
    +# the value -1 means dimension is inferred from the remaining dimensions: 8x8 = 64
    +n_inputs = len(inputs)
    +inputs = inputs.reshape(n_inputs, -1)
    +print("X = (n_inputs, n_features) = " + str(inputs.shape))
    +
    +
    +# choose some random images to display
    +indices = np.arange(n_inputs)
    +random_indices = np.random.choice(indices, size=5)
    +
    +for i, image in enumerate(digits.images[random_indices]):
    +    plt.subplot(1, 5, i+1)
    +    plt.axis('off')
    +    plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
    +    plt.title("Label: %d" % digits.target[random_indices[i]])
    +plt.show()
    +
    +

    + + +

    from keras.utils import to_categorical
    +from sklearn.model_selection import train_test_split
    +
    +# one-hot representation of labels
    +labels = to_categorical(labels)
    +
    +# split into train and test data
    +train_size = 0.8
    +test_size = 1 - train_size
    +X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size,
    +                                                    test_size=test_size)
    +
    +

    +









    + +

    Using TensorFlow backend

    + +
      +
    1. Define model and architecture
    2. +
    3. Choose cost function and optimizer
    4. +
    + +

    + + +

    import tensorflow as tf
    +
    +class NeuralNetworkTensorflow:
    +    def __init__(
    +        self,
    +        X_train,
    +        Y_train,
    +        X_test,
    +        Y_test,
    +        n_neurons_layer1=100,
    +        n_neurons_layer2=50,
    +        n_categories=2,
    +        epochs=10,
    +        batch_size=100,
    +        eta=0.1,
    +        lmbd=0.0,
    +    ):
    +        
    +        # keep track of number of steps
    +        self.global_step = tf.Variable(0, dtype=tf.int32, trainable=False, name='global_step')
    +        
    +        self.X_train = X_train
    +        self.Y_train = Y_train
    +        self.X_test = X_test
    +        self.Y_test = Y_test
    +        
    +        self.n_inputs = X_train.shape[0]
    +        self.n_features = X_train.shape[1]
    +        self.n_neurons_layer1 = n_neurons_layer1
    +        self.n_neurons_layer2 = n_neurons_layer2
    +        self.n_categories = n_categories
    +        
    +        self.epochs = epochs
    +        self.batch_size = batch_size
    +        self.iterations = self.n_inputs // self.batch_size
    +        self.eta = eta
    +        self.lmbd = lmbd
    +        
    +        # build network piece by piece
    +        # name scopes (with) are used to enforce creation of new variables
    +        # https://www.tensorflow.org/guide/variables
    +        self.create_placeholders()
    +        self.create_DNN()
    +        self.create_loss()
    +        self.create_optimiser()
    +        self.create_accuracy()
    +    
    +    def create_placeholders(self):
    +        # placeholders are fine here, but "Datasets" are the preferred method
    +        # of streaming data into a model
    +        with tf.name_scope('data'):
    +            self.X = tf.placeholder(tf.float32, shape=(None, self.n_features), name='X_data')
    +            self.Y = tf.placeholder(tf.float32, shape=(None, self.n_categories), name='Y_data')
    +    
    +    def create_DNN(self):
    +        with tf.name_scope('DNN'):
    +            # the weights are stored to calculate regularization loss later
    +            
    +            # Fully connected layer 1
    +            self.W_fc1 = self.weight_variable([self.n_features, self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            b_fc1 = self.bias_variable([self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            a_fc1 = tf.nn.sigmoid(tf.matmul(self.X, self.W_fc1) + b_fc1)
    +            
    +            # Fully connected layer 2
    +            self.W_fc2 = self.weight_variable([self.n_neurons_layer1, self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            b_fc2 = self.bias_variable([self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            a_fc2 = tf.nn.sigmoid(tf.matmul(a_fc1, self.W_fc2) + b_fc2)
    +            
    +            # Output layer
    +            self.W_out = self.weight_variable([self.n_neurons_layer2, self.n_categories], name='out', dtype=tf.float32)
    +            b_out = self.bias_variable([self.n_categories], name='out', dtype=tf.float32)
    +            self.z_out = tf.matmul(a_fc2, self.W_out) + b_out
    +    
    +    def create_loss(self):
    +        with tf.name_scope('loss'):
    +            softmax_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=self.Y, logits=self.z_out))
    +            
    +            regularizer_loss_fc1 = tf.nn.l2_loss(self.W_fc1)
    +            regularizer_loss_fc2 = tf.nn.l2_loss(self.W_fc2)
    +            regularizer_loss_out = tf.nn.l2_loss(self.W_out)
    +            regularizer_loss = self.lmbd*(regularizer_loss_fc1 + regularizer_loss_fc2 + regularizer_loss_out)
    +            
    +            self.loss = softmax_loss + regularizer_loss
    +
    +    def create_accuracy(self):
    +        with tf.name_scope('accuracy'):
    +            probabilities = tf.nn.softmax(self.z_out)
    +            predictions = tf.argmax(probabilities, axis=1)
    +            labels = tf.argmax(self.Y, axis=1)
    +            
    +            correct_predictions = tf.equal(predictions, labels)
    +            correct_predictions = tf.cast(correct_predictions, tf.float32)
    +            self.accuracy = tf.reduce_mean(correct_predictions)
    +    
    +    def create_optimiser(self):
    +        with tf.name_scope('optimizer'):
    +            self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.eta).minimize(self.loss, global_step=self.global_step)
    +            
    +    def weight_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.truncated_normal(shape, stddev=0.1)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def bias_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.constant(0.1, shape=shape)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def fit(self):
    +        data_indices = np.arange(self.n_inputs)
    +
    +        with tf.Session() as sess:
    +            sess.run(tf.global_variables_initializer())
    +            for i in range(self.epochs):
    +                for j in range(self.iterations):
    +                    chosen_datapoints = np.random.choice(data_indices, size=self.batch_size, replace=False)
    +                    batch_X, batch_Y = self.X_train[chosen_datapoints], self.Y_train[chosen_datapoints]
    +            
    +                    sess.run([DNN.loss, DNN.optimizer],
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    accuracy = sess.run(DNN.accuracy,
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    step = sess.run(DNN.global_step)
    +    
    +            self.train_loss, self.train_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_train,
    +                           DNN.Y: self.Y_train})
    +        
    +            self.test_loss, self.test_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_test,
    +                           DNN.Y: self.Y_test})
    +
    +

    +









    + +

    Optimizing and using gradient descent

    + +

    + + +

    epochs = 100
    +batch_size = 100
    +n_neurons_layer1 = 100
    +n_neurons_layer2 = 50
    +n_categories = 10
    +
    +eta_vals = np.logspace(-5, 1, 7)
    +lmbd_vals = np.logspace(-5, 1, 7)
    +
    +

    + + +

    DNN_tf = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = NeuralNetworkTensorflow(X_train, Y_train, X_test, Y_test,
    +                                      n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                      epochs=epochs, batch_size=batch_size, eta=eta, lmbd=lmbd)
    +        DNN.fit()
    +        
    +        DNN_tf[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % DNN.test_accuracy)
    +        print()
    +        
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_tf[i][j]
    +
    +        train_accuracy[i][j] = DNN.train_accuracy
    +        test_accuracy[i][j] = DNN.test_accuracy
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +

    + + +

    # optional
    +# we can use log files to visualize our graph in Tensorboard
    +writer = tf.summary.FileWriter('logs/')
    +writer.add_graph(tf.get_default_graph())
    +
    +

    +









    + +

    Using Keras

    + +

    +Keras is a high level neural network +that supports Tensorflow, CTNK and Theano as backends. +If you have Tensorflow installed Keras is available through the tf.keras module. +If you have Anaconda installed you may run the following command +

    + + +

    conda install keras
    +
    +

    +Alternatively, if you have Tensorflow or one of the other supported backends install you may use the pip package manager: + +

    + + +

    pip3 install keras
    +
    +

    +or look up the instructions here. + +

    + + +

    from keras.models import Sequential
    +from keras.layers import Dense
    +from keras.regularizers import l2
    +from keras.optimizers import SGD
    +
    +def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):
    +    model = Sequential()
    +    model.add(Dense(n_neurons_layer1, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_neurons_layer2, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_categories, activation='softmax'))
    +    
    +    sgd = SGD(lr=eta)
    +    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    +    
    +    return model
    +
    +

    + + +

    DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                         eta=eta, lmbd=lmbd)
    +        DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)
    +        scores = DNN.evaluate(X_test, Y_test)
    +        
    +        DNN_keras[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % scores[1])
    +        print()
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_keras[i][j]
    +
    +        train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]
    +        test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +

    diff --git a/doc/pub/NeuralNet/html/NeuralNet.html b/doc/pub/NeuralNet/html/NeuralNet.html index 6356f4f14..cfb13c6ce 100644 --- a/doc/pub/NeuralNet/html/NeuralNet.html +++ b/doc/pub/NeuralNet/html/NeuralNet.html @@ -140,7 +140,15 @@ div { text-align: justify; text-justify: inter-word; } None, '___sec47'), ('scikit-learn implementation', 2, None, '___sec48'), - ('And then with Tensorflow', 2, None, '___sec49')]} + ('Building neural networks in Tensorflow and Keras', + 2, + None, + '___sec49'), + ('Tensorflow', 2, None, '___sec50'), + ('Collect and pre-process data', 2, None, '___sec51'), + ('Using TensorFlow backend', 2, None, '___sec52'), + ('Optimizing and using gradient descent', 2, None, '___sec53'), + ('Using Keras', 2, None, '___sec54')]} end of tocinfo --> @@ -2180,8 +2188,453 @@ plt.show()











    -

    And then with Tensorflow

    +

    Building neural networks in Tensorflow and Keras

    +

    +Now we want to build on the experience gained from our neural network implementation in NumPy and scikit-learn +and use it to construct a neural network in Tensorflow. Once we have constructed a neural network in NumPy +and Tensorflow, building one in Keras is really quite trivial, though the performance may suffer. + +

    +In our previous example we used only one hidden layer, and in this we will use two. From this it should be quite +clear how to build one using an arbitrary number of hidden layers, using data structures such as Python lists or +NumPy arrays. + +

    +









    + +

    Tensorflow

    + +

    +Tensorflow is an open source library machine learning library +developed by the Google Brain team for internal use. It was released +under the Apache 2.0 open source license in November 9, 2015. + +

    +Tensorflow is a computational framework that allows you to construct +machine learning models at different levels of abstraction, from +high-level, object-oriented APIs like Keras, down to the C++ kernels +that Tensorflow is built upon. The higher levels of abstraction are +simpler to use, but less flexible, and our choice of implementation +should reflect the problems we are trying to solve. + +

    +Tensorflow uses so-called graphs to represent your computation +in terms of the dependencies between individual operations, such that you first build a Tensorflow graph +to represent your model, and then create a Tensorflow session to run the graph. + +

    +In this guide we will analyze the same data as we did in our NumPy and +scikit-learn tutorial, gathered from the MNIST database of images. We +will give an introduction to the lower level Python Application +Program Interfaces (APIs), and see how we use them to build our graph. +Then we will build (effectively) the same graph in Keras, to see just +how simple solving a machine learning problem can be. + +

    +To install tensorflow on Unix/Linux systems, use pip as +

    + + +

    pip3 install tensorflow
    +
    +

    +and/or if you use anaconda, just write (or install from the graphical user interface) +

    + + +

    conda install tensorflow
    +
    +

    +









    + +

    Collect and pre-process data

    + +

    + + +

    # import necessary packages
    +import numpy as np
    +import matplotlib.pyplot as plt
    +from sklearn import datasets
    +
    +
    +# ensure the same random numbers appear every time
    +np.random.seed(0)
    +
    +# display images in notebook
    +%matplotlib inline
    +plt.rcParams['figure.figsize'] = (12,12)
    +
    +
    +# download MNIST dataset
    +digits = datasets.load_digits()
    +
    +# define inputs and labels
    +inputs = digits.images
    +labels = digits.target
    +
    +print("inputs = (n_inputs, pixel_width, pixel_height) = " + str(inputs.shape))
    +print("labels = (n_inputs) = " + str(labels.shape))
    +
    +
    +# flatten the image
    +# the value -1 means dimension is inferred from the remaining dimensions: 8x8 = 64
    +n_inputs = len(inputs)
    +inputs = inputs.reshape(n_inputs, -1)
    +print("X = (n_inputs, n_features) = " + str(inputs.shape))
    +
    +
    +# choose some random images to display
    +indices = np.arange(n_inputs)
    +random_indices = np.random.choice(indices, size=5)
    +
    +for i, image in enumerate(digits.images[random_indices]):
    +    plt.subplot(1, 5, i+1)
    +    plt.axis('off')
    +    plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
    +    plt.title("Label: %d" % digits.target[random_indices[i]])
    +plt.show()
    +
    +

    + + +

    from keras.utils import to_categorical
    +from sklearn.model_selection import train_test_split
    +
    +# one-hot representation of labels
    +labels = to_categorical(labels)
    +
    +# split into train and test data
    +train_size = 0.8
    +test_size = 1 - train_size
    +X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size,
    +                                                    test_size=test_size)
    +
    +

    +









    + +

    Using TensorFlow backend

    + +
      +
    1. Define model and architecture
    2. +
    3. Choose cost function and optimizer
    4. +
    + +

    + + +

    import tensorflow as tf
    +
    +class NeuralNetworkTensorflow:
    +    def __init__(
    +        self,
    +        X_train,
    +        Y_train,
    +        X_test,
    +        Y_test,
    +        n_neurons_layer1=100,
    +        n_neurons_layer2=50,
    +        n_categories=2,
    +        epochs=10,
    +        batch_size=100,
    +        eta=0.1,
    +        lmbd=0.0,
    +    ):
    +        
    +        # keep track of number of steps
    +        self.global_step = tf.Variable(0, dtype=tf.int32, trainable=False, name='global_step')
    +        
    +        self.X_train = X_train
    +        self.Y_train = Y_train
    +        self.X_test = X_test
    +        self.Y_test = Y_test
    +        
    +        self.n_inputs = X_train.shape[0]
    +        self.n_features = X_train.shape[1]
    +        self.n_neurons_layer1 = n_neurons_layer1
    +        self.n_neurons_layer2 = n_neurons_layer2
    +        self.n_categories = n_categories
    +        
    +        self.epochs = epochs
    +        self.batch_size = batch_size
    +        self.iterations = self.n_inputs // self.batch_size
    +        self.eta = eta
    +        self.lmbd = lmbd
    +        
    +        # build network piece by piece
    +        # name scopes (with) are used to enforce creation of new variables
    +        # https://www.tensorflow.org/guide/variables
    +        self.create_placeholders()
    +        self.create_DNN()
    +        self.create_loss()
    +        self.create_optimiser()
    +        self.create_accuracy()
    +    
    +    def create_placeholders(self):
    +        # placeholders are fine here, but "Datasets" are the preferred method
    +        # of streaming data into a model
    +        with tf.name_scope('data'):
    +            self.X = tf.placeholder(tf.float32, shape=(None, self.n_features), name='X_data')
    +            self.Y = tf.placeholder(tf.float32, shape=(None, self.n_categories), name='Y_data')
    +    
    +    def create_DNN(self):
    +        with tf.name_scope('DNN'):
    +            # the weights are stored to calculate regularization loss later
    +            
    +            # Fully connected layer 1
    +            self.W_fc1 = self.weight_variable([self.n_features, self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            b_fc1 = self.bias_variable([self.n_neurons_layer1], name='fc1', dtype=tf.float32)
    +            a_fc1 = tf.nn.sigmoid(tf.matmul(self.X, self.W_fc1) + b_fc1)
    +            
    +            # Fully connected layer 2
    +            self.W_fc2 = self.weight_variable([self.n_neurons_layer1, self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            b_fc2 = self.bias_variable([self.n_neurons_layer2], name='fc2', dtype=tf.float32)
    +            a_fc2 = tf.nn.sigmoid(tf.matmul(a_fc1, self.W_fc2) + b_fc2)
    +            
    +            # Output layer
    +            self.W_out = self.weight_variable([self.n_neurons_layer2, self.n_categories], name='out', dtype=tf.float32)
    +            b_out = self.bias_variable([self.n_categories], name='out', dtype=tf.float32)
    +            self.z_out = tf.matmul(a_fc2, self.W_out) + b_out
    +    
    +    def create_loss(self):
    +        with tf.name_scope('loss'):
    +            softmax_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=self.Y, logits=self.z_out))
    +            
    +            regularizer_loss_fc1 = tf.nn.l2_loss(self.W_fc1)
    +            regularizer_loss_fc2 = tf.nn.l2_loss(self.W_fc2)
    +            regularizer_loss_out = tf.nn.l2_loss(self.W_out)
    +            regularizer_loss = self.lmbd*(regularizer_loss_fc1 + regularizer_loss_fc2 + regularizer_loss_out)
    +            
    +            self.loss = softmax_loss + regularizer_loss
    +
    +    def create_accuracy(self):
    +        with tf.name_scope('accuracy'):
    +            probabilities = tf.nn.softmax(self.z_out)
    +            predictions = tf.argmax(probabilities, axis=1)
    +            labels = tf.argmax(self.Y, axis=1)
    +            
    +            correct_predictions = tf.equal(predictions, labels)
    +            correct_predictions = tf.cast(correct_predictions, tf.float32)
    +            self.accuracy = tf.reduce_mean(correct_predictions)
    +    
    +    def create_optimiser(self):
    +        with tf.name_scope('optimizer'):
    +            self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.eta).minimize(self.loss, global_step=self.global_step)
    +            
    +    def weight_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.truncated_normal(shape, stddev=0.1)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def bias_variable(self, shape, name='', dtype=tf.float32):
    +        initial = tf.constant(0.1, shape=shape)
    +        return tf.Variable(initial, name=name, dtype=dtype)
    +    
    +    def fit(self):
    +        data_indices = np.arange(self.n_inputs)
    +
    +        with tf.Session() as sess:
    +            sess.run(tf.global_variables_initializer())
    +            for i in range(self.epochs):
    +                for j in range(self.iterations):
    +                    chosen_datapoints = np.random.choice(data_indices, size=self.batch_size, replace=False)
    +                    batch_X, batch_Y = self.X_train[chosen_datapoints], self.Y_train[chosen_datapoints]
    +            
    +                    sess.run([DNN.loss, DNN.optimizer],
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    accuracy = sess.run(DNN.accuracy,
    +                        feed_dict={DNN.X: batch_X,
    +                                   DNN.Y: batch_Y})
    +                    step = sess.run(DNN.global_step)
    +    
    +            self.train_loss, self.train_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_train,
    +                           DNN.Y: self.Y_train})
    +        
    +            self.test_loss, self.test_accuracy = sess.run([DNN.loss, DNN.accuracy],
    +                feed_dict={DNN.X: self.X_test,
    +                           DNN.Y: self.Y_test})
    +
    +

    +









    + +

    Optimizing and using gradient descent

    + +

    + + +

    epochs = 100
    +batch_size = 100
    +n_neurons_layer1 = 100
    +n_neurons_layer2 = 50
    +n_categories = 10
    +
    +eta_vals = np.logspace(-5, 1, 7)
    +lmbd_vals = np.logspace(-5, 1, 7)
    +
    +

    + + +

    DNN_tf = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = NeuralNetworkTensorflow(X_train, Y_train, X_test, Y_test,
    +                                      n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                      epochs=epochs, batch_size=batch_size, eta=eta, lmbd=lmbd)
    +        DNN.fit()
    +        
    +        DNN_tf[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % DNN.test_accuracy)
    +        print()
    +        
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_tf[i][j]
    +
    +        train_accuracy[i][j] = DNN.train_accuracy
    +        test_accuracy[i][j] = DNN.test_accuracy
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +

    + + +

    # optional
    +# we can use log files to visualize our graph in Tensorboard
    +writer = tf.summary.FileWriter('logs/')
    +writer.add_graph(tf.get_default_graph())
    +
    +

    +









    + +

    Using Keras

    + +

    +Keras is a high level neural network +that supports Tensorflow, CTNK and Theano as backends. +If you have Tensorflow installed Keras is available through the tf.keras module. +If you have Anaconda installed you may run the following command +

    + + +

    conda install keras
    +
    +

    +Alternatively, if you have Tensorflow or one of the other supported backends install you may use the pip package manager: + +

    + + +

    pip3 install keras
    +
    +

    +or look up the instructions here. + +

    + + +

    from keras.models import Sequential
    +from keras.layers import Dense
    +from keras.regularizers import l2
    +from keras.optimizers import SGD
    +
    +def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):
    +    model = Sequential()
    +    model.add(Dense(n_neurons_layer1, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_neurons_layer2, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_categories, activation='softmax'))
    +    
    +    sgd = SGD(lr=eta)
    +    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    +    
    +    return model
    +
    +

    + + +

    DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                         eta=eta, lmbd=lmbd)
    +        DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)
    +        scores = DNN.evaluate(X_test, Y_test)
    +        
    +        DNN_keras[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % scores[1])
    +        print()
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_keras[i][j]
    +
    +        train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]
    +        test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +

    diff --git a/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb b/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb index c56f955ed..fd6d5ee07 100644 --- a/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb +++ b/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb @@ -2447,7 +2447,546 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## And then with Tensorflow" + "## Building neural networks in Tensorflow and Keras\n", + "\n", + "Now we want to build on the experience gained from our neural network implementation in NumPy and scikit-learn\n", + "and use it to construct a neural network in Tensorflow. Once we have constructed a neural network in NumPy\n", + "and Tensorflow, building one in Keras is really quite trivial, though the performance may suffer. \n", + "\n", + "In our previous example we used only one hidden layer, and in this we will use two. From this it should be quite\n", + "clear how to build one using an arbitrary number of hidden layers, using data structures such as Python lists or\n", + "NumPy arrays.\n", + "\n", + "## Tensorflow\n", + "\n", + "Tensorflow is an open source library machine learning library\n", + "developed by the Google Brain team for internal use. It was released\n", + "under the Apache 2.0 open source license in November 9, 2015.\n", + "\n", + "Tensorflow is a computational framework that allows you to construct\n", + "machine learning models at different levels of abstraction, from\n", + "high-level, object-oriented APIs like Keras, down to the C++ kernels\n", + "that Tensorflow is built upon. The higher levels of abstraction are\n", + "simpler to use, but less flexible, and our choice of implementation\n", + "should reflect the problems we are trying to solve.\n", + "\n", + "[Tensorflow uses](https://www.tensorflow.org/guide/graphs) so-called graphs to represent your computation\n", + "in terms of the dependencies between individual operations, such that you first build a Tensorflow *graph*\n", + "to represent your model, and then create a Tensorflow *session* to run the graph.\n", + "\n", + "In this guide we will analyze the same data as we did in our NumPy and\n", + "scikit-learn tutorial, gathered from the MNIST database of images. We\n", + "will give an introduction to the lower level Python Application\n", + "Program Interfaces (APIs), and see how we use them to build our graph.\n", + "Then we will build (effectively) the same graph in Keras, to see just\n", + "how simple solving a machine learning problem can be.\n", + "\n", + "To install tensorflow on Unix/Linux systems, use pip as" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pip3 install tensorflow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and/or if you use **anaconda**, just write (or install from the graphical user interface)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "conda install tensorflow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Collect and pre-process data" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# import necessary packages\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn import datasets\n", + "\n", + "\n", + "# ensure the same random numbers appear every time\n", + "np.random.seed(0)\n", + "\n", + "# display images in notebook\n", + "%matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (12,12)\n", + "\n", + "\n", + "# download MNIST dataset\n", + "digits = datasets.load_digits()\n", + "\n", + "# define inputs and labels\n", + "inputs = digits.images\n", + "labels = digits.target\n", + "\n", + "print(\"inputs = (n_inputs, pixel_width, pixel_height) = \" + str(inputs.shape))\n", + "print(\"labels = (n_inputs) = \" + str(labels.shape))\n", + "\n", + "\n", + "# flatten the image\n", + "# the value -1 means dimension is inferred from the remaining dimensions: 8x8 = 64\n", + "n_inputs = len(inputs)\n", + "inputs = inputs.reshape(n_inputs, -1)\n", + "print(\"X = (n_inputs, n_features) = \" + str(inputs.shape))\n", + "\n", + "\n", + "# choose some random images to display\n", + "indices = np.arange(n_inputs)\n", + "random_indices = np.random.choice(indices, size=5)\n", + "\n", + "for i, image in enumerate(digits.images[random_indices]):\n", + " plt.subplot(1, 5, i+1)\n", + " plt.axis('off')\n", + " plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')\n", + " plt.title(\"Label: %d\" % digits.target[random_indices[i]])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from keras.utils import to_categorical\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "# one-hot representation of labels\n", + "labels = to_categorical(labels)\n", + "\n", + "# split into train and test data\n", + "train_size = 0.8\n", + "test_size = 1 - train_size\n", + "X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size,\n", + " test_size=test_size)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using TensorFlow backend\n", + "\n", + "1. Define model and architecture\n", + "\n", + "2. Choose cost function and optimizer" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "\n", + "class NeuralNetworkTensorflow:\n", + " def __init__(\n", + " self,\n", + " X_train,\n", + " Y_train,\n", + " X_test,\n", + " Y_test,\n", + " n_neurons_layer1=100,\n", + " n_neurons_layer2=50,\n", + " n_categories=2,\n", + " epochs=10,\n", + " batch_size=100,\n", + " eta=0.1,\n", + " lmbd=0.0,\n", + " ):\n", + " \n", + " # keep track of number of steps\n", + " self.global_step = tf.Variable(0, dtype=tf.int32, trainable=False, name='global_step')\n", + " \n", + " self.X_train = X_train\n", + " self.Y_train = Y_train\n", + " self.X_test = X_test\n", + " self.Y_test = Y_test\n", + " \n", + " self.n_inputs = X_train.shape[0]\n", + " self.n_features = X_train.shape[1]\n", + " self.n_neurons_layer1 = n_neurons_layer1\n", + " self.n_neurons_layer2 = n_neurons_layer2\n", + " self.n_categories = n_categories\n", + " \n", + " self.epochs = epochs\n", + " self.batch_size = batch_size\n", + " self.iterations = self.n_inputs // self.batch_size\n", + " self.eta = eta\n", + " self.lmbd = lmbd\n", + " \n", + " # build network piece by piece\n", + " # name scopes (with) are used to enforce creation of new variables\n", + " # https://www.tensorflow.org/guide/variables\n", + " self.create_placeholders()\n", + " self.create_DNN()\n", + " self.create_loss()\n", + " self.create_optimiser()\n", + " self.create_accuracy()\n", + " \n", + " def create_placeholders(self):\n", + " # placeholders are fine here, but \"Datasets\" are the preferred method\n", + " # of streaming data into a model\n", + " with tf.name_scope('data'):\n", + " self.X = tf.placeholder(tf.float32, shape=(None, self.n_features), name='X_data')\n", + " self.Y = tf.placeholder(tf.float32, shape=(None, self.n_categories), name='Y_data')\n", + " \n", + " def create_DNN(self):\n", + " with tf.name_scope('DNN'):\n", + " # the weights are stored to calculate regularization loss later\n", + " \n", + " # Fully connected layer 1\n", + " self.W_fc1 = self.weight_variable([self.n_features, self.n_neurons_layer1], name='fc1', dtype=tf.float32)\n", + " b_fc1 = self.bias_variable([self.n_neurons_layer1], name='fc1', dtype=tf.float32)\n", + " a_fc1 = tf.nn.sigmoid(tf.matmul(self.X, self.W_fc1) + b_fc1)\n", + " \n", + " # Fully connected layer 2\n", + " self.W_fc2 = self.weight_variable([self.n_neurons_layer1, self.n_neurons_layer2], name='fc2', dtype=tf.float32)\n", + " b_fc2 = self.bias_variable([self.n_neurons_layer2], name='fc2', dtype=tf.float32)\n", + " a_fc2 = tf.nn.sigmoid(tf.matmul(a_fc1, self.W_fc2) + b_fc2)\n", + " \n", + " # Output layer\n", + " self.W_out = self.weight_variable([self.n_neurons_layer2, self.n_categories], name='out', dtype=tf.float32)\n", + " b_out = self.bias_variable([self.n_categories], name='out', dtype=tf.float32)\n", + " self.z_out = tf.matmul(a_fc2, self.W_out) + b_out\n", + " \n", + " def create_loss(self):\n", + " with tf.name_scope('loss'):\n", + " softmax_loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(labels=self.Y, logits=self.z_out))\n", + " \n", + " regularizer_loss_fc1 = tf.nn.l2_loss(self.W_fc1)\n", + " regularizer_loss_fc2 = tf.nn.l2_loss(self.W_fc2)\n", + " regularizer_loss_out = tf.nn.l2_loss(self.W_out)\n", + " regularizer_loss = self.lmbd*(regularizer_loss_fc1 + regularizer_loss_fc2 + regularizer_loss_out)\n", + " \n", + " self.loss = softmax_loss + regularizer_loss\n", + "\n", + " def create_accuracy(self):\n", + " with tf.name_scope('accuracy'):\n", + " probabilities = tf.nn.softmax(self.z_out)\n", + " predictions = tf.argmax(probabilities, axis=1)\n", + " labels = tf.argmax(self.Y, axis=1)\n", + " \n", + " correct_predictions = tf.equal(predictions, labels)\n", + " correct_predictions = tf.cast(correct_predictions, tf.float32)\n", + " self.accuracy = tf.reduce_mean(correct_predictions)\n", + " \n", + " def create_optimiser(self):\n", + " with tf.name_scope('optimizer'):\n", + " self.optimizer = tf.train.GradientDescentOptimizer(learning_rate=self.eta).minimize(self.loss, global_step=self.global_step)\n", + " \n", + " def weight_variable(self, shape, name='', dtype=tf.float32):\n", + " initial = tf.truncated_normal(shape, stddev=0.1)\n", + " return tf.Variable(initial, name=name, dtype=dtype)\n", + " \n", + " def bias_variable(self, shape, name='', dtype=tf.float32):\n", + " initial = tf.constant(0.1, shape=shape)\n", + " return tf.Variable(initial, name=name, dtype=dtype)\n", + " \n", + " def fit(self):\n", + " data_indices = np.arange(self.n_inputs)\n", + "\n", + " with tf.Session() as sess:\n", + " sess.run(tf.global_variables_initializer())\n", + " for i in range(self.epochs):\n", + " for j in range(self.iterations):\n", + " chosen_datapoints = np.random.choice(data_indices, size=self.batch_size, replace=False)\n", + " batch_X, batch_Y = self.X_train[chosen_datapoints], self.Y_train[chosen_datapoints]\n", + " \n", + " sess.run([DNN.loss, DNN.optimizer],\n", + " feed_dict={DNN.X: batch_X,\n", + " DNN.Y: batch_Y})\n", + " accuracy = sess.run(DNN.accuracy,\n", + " feed_dict={DNN.X: batch_X,\n", + " DNN.Y: batch_Y})\n", + " step = sess.run(DNN.global_step)\n", + " \n", + " self.train_loss, self.train_accuracy = sess.run([DNN.loss, DNN.accuracy],\n", + " feed_dict={DNN.X: self.X_train,\n", + " DNN.Y: self.Y_train})\n", + " \n", + " self.test_loss, self.test_accuracy = sess.run([DNN.loss, DNN.accuracy],\n", + " feed_dict={DNN.X: self.X_test,\n", + " DNN.Y: self.Y_test})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimizing and using gradient descent" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "epochs = 100\n", + "batch_size = 100\n", + "n_neurons_layer1 = 100\n", + "n_neurons_layer2 = 50\n", + "n_categories = 10\n", + "\n", + "eta_vals = np.logspace(-5, 1, 7)\n", + "lmbd_vals = np.logspace(-5, 1, 7)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "DNN_tf = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)\n", + " \n", + "for i, eta in enumerate(eta_vals):\n", + " for j, lmbd in enumerate(lmbd_vals):\n", + " DNN = NeuralNetworkTensorflow(X_train, Y_train, X_test, Y_test,\n", + " n_neurons_layer1, n_neurons_layer2, n_categories,\n", + " epochs=epochs, batch_size=batch_size, eta=eta, lmbd=lmbd)\n", + " DNN.fit()\n", + " \n", + " DNN_tf[i][j] = DNN\n", + " \n", + " print(\"Learning rate = \", eta)\n", + " print(\"Lambda = \", lmbd)\n", + " print(\"Test accuracy: %.3f\" % DNN.test_accuracy)\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# optional\n", + "# visual representation of grid search\n", + "# uses seaborn heatmap, could probably do this in matplotlib\n", + "import seaborn as sns\n", + "\n", + "sns.set()\n", + "\n", + "train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))\n", + "test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))\n", + "\n", + "for i in range(len(eta_vals)):\n", + " for j in range(len(lmbd_vals)):\n", + " DNN = DNN_tf[i][j]\n", + "\n", + " train_accuracy[i][j] = DNN.train_accuracy\n", + " test_accuracy[i][j] = DNN.test_accuracy\n", + "\n", + " \n", + "fig, ax = plt.subplots(figsize = (10, 10))\n", + "sns.heatmap(train_accuracy, annot=True, ax=ax, cmap=\"viridis\")\n", + "ax.set_title(\"Training Accuracy\")\n", + "ax.set_ylabel(\"$\\eta$\")\n", + "ax.set_xlabel(\"$\\lambda$\")\n", + "plt.show()\n", + "\n", + "fig, ax = plt.subplots(figsize = (10, 10))\n", + "sns.heatmap(test_accuracy, annot=True, ax=ax, cmap=\"viridis\")\n", + "ax.set_title(\"Test Accuracy\")\n", + "ax.set_ylabel(\"$\\eta$\")\n", + "ax.set_xlabel(\"$\\lambda$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# optional\n", + "# we can use log files to visualize our graph in Tensorboard\n", + "writer = tf.summary.FileWriter('logs/')\n", + "writer.add_graph(tf.get_default_graph())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using Keras\n", + "\n", + "Keras is a high level [neural network](https://en.wikipedia.org/wiki/Application_programming_interface)\n", + "that supports Tensorflow, CTNK and Theano as backends. \n", + "If you have Tensorflow installed Keras is available through the *tf.keras* module. \n", + "If you have Anaconda installed you may run the following command" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "conda install keras" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, if you have Tensorflow or one of the other supported backends install you may use the pip package manager:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pip3 install keras" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or look up the [instructions here](https://keras.io/)." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from keras.models import Sequential\n", + "from keras.layers import Dense\n", + "from keras.regularizers import l2\n", + "from keras.optimizers import SGD\n", + "\n", + "def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):\n", + " model = Sequential()\n", + " model.add(Dense(n_neurons_layer1, activation='sigmoid', kernel_regularizer=l2(lmbd)))\n", + " model.add(Dense(n_neurons_layer2, activation='sigmoid', kernel_regularizer=l2(lmbd)))\n", + " model.add(Dense(n_categories, activation='softmax'))\n", + " \n", + " sgd = SGD(lr=eta)\n", + " model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])\n", + " \n", + " return model" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)\n", + " \n", + "for i, eta in enumerate(eta_vals):\n", + " for j, lmbd in enumerate(lmbd_vals):\n", + " DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,\n", + " eta=eta, lmbd=lmbd)\n", + " DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)\n", + " scores = DNN.evaluate(X_test, Y_test)\n", + " \n", + " DNN_keras[i][j] = DNN\n", + " \n", + " print(\"Learning rate = \", eta)\n", + " print(\"Lambda = \", lmbd)\n", + " print(\"Test accuracy: %.3f\" % scores[1])\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# optional\n", + "# visual representation of grid search\n", + "# uses seaborn heatmap, could probably do this in matplotlib\n", + "import seaborn as sns\n", + "\n", + "sns.set()\n", + "\n", + "train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))\n", + "test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))\n", + "\n", + "for i in range(len(eta_vals)):\n", + " for j in range(len(lmbd_vals)):\n", + " DNN = DNN_keras[i][j]\n", + "\n", + " train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]\n", + " test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]\n", + "\n", + " \n", + "fig, ax = plt.subplots(figsize = (10, 10))\n", + "sns.heatmap(train_accuracy, annot=True, ax=ax, cmap=\"viridis\")\n", + "ax.set_title(\"Training Accuracy\")\n", + "ax.set_ylabel(\"$\\eta$\")\n", + "ax.set_xlabel(\"$\\lambda$\")\n", + "plt.show()\n", + "\n", + "fig, ax = plt.subplots(figsize = (10, 10))\n", + "sns.heatmap(test_accuracy, annot=True, ax=ax, cmap=\"viridis\")\n", + "ax.set_title(\"Test Accuracy\")\n", + "ax.set_ylabel(\"$\\eta$\")\n", + "ax.set_xlabel(\"$\\lambda$\")\n", + "plt.show()" ] } ], diff --git a/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz b/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz index 890c1fbf4dae6ee1880b3da7345490b714c051fa..df4a2068cac0e7fc7899a1a4b105bf4a9df1f9bb 100644 GIT binary patch literal 211 zcmV;^04)C>iwFS8(X(3s1MSbjYQjJe#&OR+#XLcnXkyNVdg!52iZ8H|wb@p8?d}Ge zx7R4>sl7=l{r@f>!wkdB>+<38d0FJIJh>ZHT~w8f*(~aF>g-aVl{1xcKCi2$)}|~) z$3iEf_dDsPPuaxNDc!sE$@*{SPGj5c4|^`J$Tk0nb?1^iy$rbvUVO-Q6T*kAY#+^T zWpm*UgWpISY#O@~?Pu?z72^jnZR@fN-t4A_7~Z1Ur(*is{{R300000000000006*$ NaRi>1U!?#j0061dX~+No literal 211 zcmb2|=3rplyE&SH`R)0GS%(}1juoD_J8I)NV}``})~XK+raa&^OUT3WVx{i&H=k)fZf0!_D0 zTa>&|_~P%mUzYmcJaSs|?&_~6f8{^dOaA?rzdCRIiS&Phx6i3Y+Vbw?j;lFQCVpsk zPLBN9#N^_Ke$DqirE{cq3%#v=zew~kyJ7C@P2BfnmMxcvTV%N`>DTT549MU>eIc9b LHO2-84F(1Pa2;jJ diff --git a/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf b/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf index 730df384e70f652b1f8e061607de63742e6be006..1f58cbc2a9d3e602807774ef5fd91f86805cbea5 100644 GIT binary patch delta 184147 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 IzBwBBF9cG+!T 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

    mlI` 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