From 39e3ccd36e7eefbe4c93829aca5498081c3aef09 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Fri, 19 Oct 2018 05:52:15 +0200 Subject: [PATCH] correcting typos --- doc/pub/NeuralNet/html/._NeuralNet-bs000.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs001.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs002.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs003.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs004.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs005.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs006.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs007.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs008.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs009.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs010.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs011.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs012.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs013.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs014.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs015.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs016.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs017.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs018.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs019.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs020.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs021.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs022.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs023.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs024.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs025.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs026.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs027.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs028.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs029.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs030.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs031.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs032.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs033.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs034.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs035.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs036.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs037.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs038.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs039.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs040.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs041.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs042.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs043.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs044.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs045.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs046.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs047.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs048.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs049.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs050.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs051.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs052.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs053.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs054.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs055.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs056.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs057.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs058.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs059.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs060.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs061.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs062.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs063.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs064.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs065.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs066.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs067.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs068.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs069.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs070.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs071.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs072.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs073.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs074.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs075.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs076.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs077.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs078.html | 53 +- doc/pub/NeuralNet/html/._NeuralNet-bs079.html | 54 +- doc/pub/NeuralNet/html/._NeuralNet-bs080.html | 55 +- doc/pub/NeuralNet/html/._NeuralNet-bs081.html | 56 +- doc/pub/NeuralNet/html/._NeuralNet-bs082.html | 57 +- doc/pub/NeuralNet/html/._NeuralNet-bs083.html | 58 +- doc/pub/NeuralNet/html/._NeuralNet-bs084.html | 59 +- doc/pub/NeuralNet/html/._NeuralNet-bs085.html | 60 +- doc/pub/NeuralNet/html/._NeuralNet-bs086.html | 61 +- doc/pub/NeuralNet/html/._NeuralNet-bs087.html | 64 +- doc/pub/NeuralNet/html/NeuralNet-bs.html | 53 +- doc/pub/NeuralNet/html/NeuralNet-reveal.html | 868 +++++++++++++++ .../NeuralNet/html/NeuralNet-solarized.html | 848 ++++++++++++++- doc/pub/NeuralNet/html/NeuralNet.html | 848 ++++++++++++++- doc/pub/NeuralNet/ipynb/NeuralNet.ipynb | 989 +++++++++++++++++- .../ipynb/ipynb-NeuralNet-src.tar.gz | Bin 88051 -> 88051 bytes doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf | Bin 591416 -> 664646 bytes doc/src/NeuralNet/NeuralNet.do.txt | 743 +++++++++++++ 96 files changed, 8888 insertions(+), 172 deletions(-) diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs000.html b/doc/pub/NeuralNet/html/._NeuralNet-bs000.html index 77def0bb5..ddfcae71f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs000.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs000.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -357,7 +406,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs001.html b/doc/pub/NeuralNet/html/._NeuralNet-bs001.html index 5bfe1a146..de81d371e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs001.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs001.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -342,7 +391,7 @@ a weight variable.
  • 10
  • 11
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs002.html b/doc/pub/NeuralNet/html/._NeuralNet-bs002.html index 111f8f033..e73bb72be 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs002.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs002.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -392,7 +441,7 @@ humanities to life science and medicine.
  • 11
  • 12
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs003.html b/doc/pub/NeuralNet/html/._NeuralNet-bs003.html index 867ad951a..dcf0a0514 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs003.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs003.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -357,7 +406,7 @@ methods we discussed earlier.
  • 12
  • 13
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs004.html b/doc/pub/NeuralNet/html/._NeuralNet-bs004.html index e70bdb090..9c745763f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs004.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs004.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -349,7 +398,7 @@ to all nodes in the subsequent layer, making this a so-called
  • 13
  • 14
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs005.html b/doc/pub/NeuralNet/html/._NeuralNet-bs005.html index 675da577e..a0dfb186f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs005.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs005.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -358,7 +407,7 @@ recognition.
  • 14
  • 15
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs006.html b/doc/pub/NeuralNet/html/._NeuralNet-bs006.html index 3de479f0f..73eb8cfc7 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs006.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs006.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -350,7 +399,7 @@ especially well-suited for handwriting and speech recognition.
  • 15
  • 16
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs007.html b/doc/pub/NeuralNet/html/._NeuralNet-bs007.html index 714defc0a..9d5562fd5 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs007.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs007.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -351,7 +400,7 @@ type of NN due the unusual activation functions.
  • 16
  • 17
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs008.html b/doc/pub/NeuralNet/html/._NeuralNet-bs008.html index be95c9ebf..1b186864d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs008.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs008.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -349,7 +398,7 @@ Such networks are often called multilayer perceptrons (MLPs).
  • 17
  • 18
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs009.html b/doc/pub/NeuralNet/html/._NeuralNet-bs009.html index 24b560514..3ea03c32f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs009.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs009.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -354,7 +403,7 @@ as to not restrict the range of output values.
  • 18
  • 19
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs010.html b/doc/pub/NeuralNet/html/._NeuralNet-bs010.html index 7b0a3bf44..7cdbec57d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs010.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs010.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -355,7 +404,7 @@ of the outputs of all neurons in the previous layer.
  • 19
  • 20
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs011.html b/doc/pub/NeuralNet/html/._NeuralNet-bs011.html index 5bab11737..16d32e3f4 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs011.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs011.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -384,7 +433,7 @@ is obtained.
  • 20
  • 21
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs012.html b/doc/pub/NeuralNet/html/._NeuralNet-bs012.html index 727a7ad2f..f26003662 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs012.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs012.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -366,7 +415,7 @@ $$
  • 21
  • 22
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs013.html b/doc/pub/NeuralNet/html/._NeuralNet-bs013.html index 5efc8c4b8..b0b7038d1 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs013.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs013.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -357,7 +406,7 @@ variables are the input values \( x_n \).
  • 22
  • 23
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs014.html b/doc/pub/NeuralNet/html/._NeuralNet-bs014.html index 3f34aae22..eb4f94e71 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs014.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs014.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -366,7 +415,7 @@ flexibility of a neural network.
  • 23
  • 24
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs015.html b/doc/pub/NeuralNet/html/._NeuralNet-bs015.html index 3f6978e5c..00c8edb01 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs015.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs015.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -376,7 +425,7 @@ $$
  • 24
  • 25
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs016.html b/doc/pub/NeuralNet/html/._NeuralNet-bs016.html index 9f46a1d47..11a02a8f9 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs016.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs016.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -360,7 +409,7 @@ used as input to the activation functions. For each operation
  • 25
  • 26
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs017.html b/doc/pub/NeuralNet/html/._NeuralNet-bs017.html index ab7e92de8..aef848854 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs017.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs017.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -354,7 +403,7 @@ for a FFNN to fulfill the universal approximation theorem
  • 26
  • 27
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs018.html b/doc/pub/NeuralNet/html/._NeuralNet-bs018.html index e0f264d7b..dc8c5a10f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs018.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs018.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -362,7 +411,7 @@ $$
  • 27
  • 28
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs019.html b/doc/pub/NeuralNet/html/._NeuralNet-bs019.html index bb6dc52f4..10d9e9386 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs019.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs019.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -424,7 +473,7 @@ plt.show()
  • 28
  • 29
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs020.html b/doc/pub/NeuralNet/html/._NeuralNet-bs020.html index cfc20678c..056ecf225 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs020.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs020.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -375,7 +424,7 @@ like logistic regression or linear regression and their modifications on the oth
  • 29
  • 30
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs021.html b/doc/pub/NeuralNet/html/._NeuralNet-bs021.html index c61d8cbdf..ebd93e9a6 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs021.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs021.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -365,7 +414,7 @@ the potential of being universal approximators.
  • 30
  • 31
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs022.html b/doc/pub/NeuralNet/html/._NeuralNet-bs022.html index 2d14d2d6d..e676a8b6e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs022.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs022.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -371,7 +420,7 @@ classes.
  • 31
  • 32
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs023.html b/doc/pub/NeuralNet/html/._NeuralNet-bs023.html index 410974113..6b78ec10c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs023.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs023.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -375,7 +424,7 @@ $$
  • 32
  • 33
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs024.html b/doc/pub/NeuralNet/html/._NeuralNet-bs024.html index 8e3fca047..53be8dcc2 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs024.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs024.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -359,7 +408,7 @@ $$
  • 33
  • 34
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs025.html b/doc/pub/NeuralNet/html/._NeuralNet-bs025.html index 782f6db27..29491da62 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs025.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs025.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -362,7 +411,7 @@ $$
  • 34
  • 35
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs026.html b/doc/pub/NeuralNet/html/._NeuralNet-bs026.html index 0d8640b34..6ae0ebf5e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs026.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs026.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -387,7 +436,7 @@ $$
  • 35
  • 36
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs027.html b/doc/pub/NeuralNet/html/._NeuralNet-bs027.html index c6be3044f..ef088d578 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs027.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs027.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -354,7 +403,7 @@ That is, the error \( \delta_j^L \) is exactly equal to the rate of change of th
  • 36
  • 37
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs028.html b/doc/pub/NeuralNet/html/._NeuralNet-bs028.html index 1c30f30f3..e40e694fe 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs028.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs028.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -399,7 +448,7 @@ one \( L-1 \) in terms of the errors in the final output layer.
  • 37
  • 38
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs029.html b/doc/pub/NeuralNet/html/._NeuralNet-bs029.html index f581bfea2..39af94d22 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs029.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs029.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -369,7 +418,7 @@ We are now ready to set up the algorithm for back propagation and learning the w
  • 38
  • 39
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs030.html b/doc/pub/NeuralNet/html/._NeuralNet-bs030.html index d69aa8c4e..1c51545ef 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs030.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs030.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -413,7 +462,7 @@ Here it is convenient to use stochastic gradient descent (see the examples below
  • 39
  • 40
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs031.html b/doc/pub/NeuralNet/html/._NeuralNet-bs031.html index 93532e220..473fedee8 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs031.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs031.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -375,7 +424,7 @@ of our network.
  • 40
  • 41
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs032.html b/doc/pub/NeuralNet/html/._NeuralNet-bs032.html index e0dd470ad..f28a6f4bc 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs032.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs032.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -397,7 +446,7 @@ The back propagation equations need now only a small change, namely the definiti
  • 41
  • 42
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs033.html b/doc/pub/NeuralNet/html/._NeuralNet-bs033.html index 2142367cc..64c11e975 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs033.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs033.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -385,7 +434,7 @@ In case we use another activation function than the logistic one, we need to eva
  • 42
  • 43
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs034.html b/doc/pub/NeuralNet/html/._NeuralNet-bs034.html index 8134c9260..b7eb14900 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs034.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs034.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -359,7 +408,7 @@ which in case of the simply binary model reduces to having \( i=j \).
  • 43
  • 44
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs035.html b/doc/pub/NeuralNet/html/._NeuralNet-bs035.html index 4b30168ff..71e9befe1 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs035.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs035.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -353,7 +402,7 @@ One can identify a set of key steps when using neural networks to solve supervis
  • 44
  • 45
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs036.html b/doc/pub/NeuralNet/html/._NeuralNet-bs036.html index 28ba61266..f33b5a40b 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs036.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs036.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -432,7 +481,7 @@ plt.show()
  • 45
  • 46
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs037.html b/doc/pub/NeuralNet/html/._NeuralNet-bs037.html index 59860c02b..c7ab2aeaf 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs037.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs037.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -386,7 +435,7 @@ X_train, X_test, Y_train, Y_test = train_tes
  • 46
  • 47
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs038.html b/doc/pub/NeuralNet/html/._NeuralNet-bs038.html index 46732053d..f2d8151c6 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs038.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs038.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -383,7 +432,7 @@ which is inspired by probability theory (see logistic regression) and was most c
  • 47
  • 48
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs039.html b/doc/pub/NeuralNet/html/._NeuralNet-bs039.html index 53ca3b191..38295173c 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs039.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs039.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -382,7 +431,7 @@ weights to the output layer.
  • 48
  • 49
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs040.html b/doc/pub/NeuralNet/html/._NeuralNet-bs040.html index 357afc4f0..1de83339a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs040.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs040.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -373,7 +422,7 @@ output_bias = np49
  • 50
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs041.html b/doc/pub/NeuralNet/html/._NeuralNet-bs041.html index 3183c8684..b133d453e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs041.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs041.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -364,7 +413,7 @@ $$ a_{j}^{L} = \frac{\exp{(z_j^{L})}}
  • 50
  • 51
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs042.html b/doc/pub/NeuralNet/html/._NeuralNet-bs042.html index b353fba5c..c2a2f4587 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs042.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs042.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -412,7 +461,7 @@ predictions = predict(X_train)
  • 51
  • 52
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs043.html b/doc/pub/NeuralNet/html/._NeuralNet-bs043.html index 0ea651383..b43f51687 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs043.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs043.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -368,7 +417,7 @@ you got the correct label. The probability of category \( c \) is given by the s
  • 52
  • 53
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs044.html b/doc/pub/NeuralNet/html/._NeuralNet-bs044.html index 5af3febfe..fa785a6c1 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs044.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs044.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -377,7 +426,7 @@ The various optmization methods, with codes and algorithms, are discussed in o
  • 53
  • 54
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs045.html b/doc/pub/NeuralNet/html/._NeuralNet-bs045.html index 7b00e6528..cb34f2101 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs045.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs045.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -370,7 +419,7 @@ calculate the gradient efficently.
  • 54
  • 55
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs046.html b/doc/pub/NeuralNet/html/._NeuralNet-bs046.html index 723f10fd1..f7b6c6af9 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs046.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs046.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -451,7 +500,7 @@ lmbd = 0.0155
  • 56
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs047.html b/doc/pub/NeuralNet/html/._NeuralNet-bs047.html index 0e2132b9f..353cd30f8 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs047.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs047.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -357,7 +406,7 @@ Andrew Ng goes through some of these considerations in this 56
  • 57
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs048.html b/doc/pub/NeuralNet/html/._NeuralNet-bs048.html index f9c7cad52..d66d4c2b3 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs048.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs048.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -450,7 +499,7 @@ being realizations of this object with different hyperparameters. An implementat
  • 57
  • 58
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs049.html b/doc/pub/NeuralNet/html/._NeuralNet-bs049.html index bc6c9400e..e32de07a8 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs049.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs049.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -372,7 +421,7 @@ test_predict = dnn58
  • 59
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs050.html b/doc/pub/NeuralNet/html/._NeuralNet-bs050.html index 83f6785c3..e1e9eaded 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs050.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs050.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -370,7 +419,7 @@ DNN_numpy = np.
  • 59
  • 60
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs051.html b/doc/pub/NeuralNet/html/._NeuralNet-bs051.html index 2c92749e6..799cf8a88 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs051.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs051.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -379,7 +428,7 @@ plt.show()
  • 60
  • 61
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs052.html b/doc/pub/NeuralNet/html/._NeuralNet-bs052.html index 4ff3e2de7..bf2b566f0 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs052.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs052.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -376,7 +425,7 @@ DNN_scikit = np
  • 61
  • 62
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs053.html b/doc/pub/NeuralNet/html/._NeuralNet-bs053.html index 0b4856ce2..0010c5a4f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs053.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs053.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -379,7 +428,7 @@ plt.show()
  • 62
  • 63
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs054.html b/doc/pub/NeuralNet/html/._NeuralNet-bs054.html index 697bd76e4..7470337de 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs054.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs054.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -352,7 +401,7 @@ NumPy arrays.
  • 63
  • 64
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs055.html b/doc/pub/NeuralNet/html/._NeuralNet-bs055.html index 3c198c16b..5c345ef38 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs055.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs055.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -382,7 +431,7 @@ and/or if you use anaconda, just write (or install from the graphical use
  • 64
  • 65
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs056.html b/doc/pub/NeuralNet/html/._NeuralNet-bs056.html index c47fa4b14..2b57e12cd 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs056.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs056.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -403,7 +452,7 @@ X_train, X_test, Y_train, Y_test = train_tes
  • 65
  • 66
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs057.html b/doc/pub/NeuralNet/html/._NeuralNet-bs057.html index 5494018a7..27f07c6ed 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs057.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs057.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -482,7 +531,7 @@ MathJax.Hub.Config({
  • 66
  • 67
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs058.html b/doc/pub/NeuralNet/html/._NeuralNet-bs058.html index 5a6bdba2a..0ea92c54e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs058.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs058.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -415,7 +464,7 @@ writer.add_graph(tf67
  • 68
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs059.html b/doc/pub/NeuralNet/html/._NeuralNet-bs059.html index ccb0885e0..f16661bde 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs059.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs059.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -436,7 +485,7 @@ plt.show()
  • 68
  • 69
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs060.html b/doc/pub/NeuralNet/html/._NeuralNet-bs060.html index 879ad5e94..4d2c5638f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs060.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs060.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -366,7 +415,7 @@ learn at widely different speeds
  • 69
  • 70
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs061.html b/doc/pub/NeuralNet/html/._NeuralNet-bs061.html index 9c490338c..e4c2f4f32 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs061.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs061.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -367,7 +416,7 @@ better than the logistic function in deep networks).
  • 70
  • 71
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs062.html b/doc/pub/NeuralNet/html/._NeuralNet-bs062.html index cf07f6aae..fa2d57b53 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs062.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs062.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -373,7 +422,7 @@ fast to compute).
  • 71
  • 72
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs063.html b/doc/pub/NeuralNet/html/._NeuralNet-bs063.html index 4b19e9839..f8aefc426 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs063.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs063.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -364,7 +413,7 @@ $$
  • 72
  • 73
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs064.html b/doc/pub/NeuralNet/html/._NeuralNet-bs064.html index 20b28a4f2..d20879a62 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs064.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs064.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -357,7 +406,7 @@ bootstrap to evaluate other activation functions.
  • 73
  • 74
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs065.html b/doc/pub/NeuralNet/html/._NeuralNet-bs065.html index c94bbe5eb..dfb40a9c2 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs065.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs065.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -379,7 +428,7 @@ supervised learning.
  • 74
  • 75
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs066.html b/doc/pub/NeuralNet/html/._NeuralNet-bs066.html index 79b256a05..1e69e0d38 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs066.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs066.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -363,7 +412,7 @@ Some of these remarks are particular to DNNs, others are shared by all supervise
  • 75
  • 76
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs067.html b/doc/pub/NeuralNet/html/._NeuralNet-bs067.html index 952bd8b66..3c7e90fa6 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs067.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs067.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -367,7 +416,7 @@ and the slides of 76
  • 77
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs068.html b/doc/pub/NeuralNet/html/._NeuralNet-bs068.html index d0b0cf8a5..d7b435e61 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs068.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs068.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -365,7 +414,7 @@ would quickly lead to possible overfitting.
  • 77
  • 78
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs069.html b/doc/pub/NeuralNet/html/._NeuralNet-bs069.html index fad9843d6..ededfecf4 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs069.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs069.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -377,7 +426,7 @@ dimension.
  • 78
  • 79
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs070.html b/doc/pub/NeuralNet/html/._NeuralNet-bs070.html index ae325d61b..c97306768 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs070.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs070.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -360,7 +409,7 @@ A simple CNN for image classification could have the architecture:
  • 79
  • 80
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs071.html b/doc/pub/NeuralNet/html/._NeuralNet-bs071.html index 142441fe9..6f036636b 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs071.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs071.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -356,7 +405,7 @@ are consistent with the labels in the training set for each image.
  • 80
  • 81
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs072.html b/doc/pub/NeuralNet/html/._NeuralNet-bs072.html index a1ff786b4..2cc1fbb00 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs072.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs072.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -358,7 +407,7 @@ and the slides of 81
  • 82
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs073.html b/doc/pub/NeuralNet/html/._NeuralNet-bs073.html index ee414f64a..ffe6cc5c9 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs073.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs073.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -353,7 +402,7 @@ matrices, typically 1 for each color dimension (Red, Green, Blue).
  • 82
  • 83
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs074.html b/doc/pub/NeuralNet/html/._NeuralNet-bs074.html index 101ae23e5..b45367c01 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs074.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs074.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -349,7 +398,7 @@ $$
  • 83
  • 84
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs075.html b/doc/pub/NeuralNet/html/._NeuralNet-bs075.html index af828474c..72fda2090 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs075.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs075.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -355,7 +404,7 @@ single neuron in the first hidden layer.
  • 84
  • 85
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs076.html b/doc/pub/NeuralNet/html/._NeuralNet-bs076.html index 23daa7f6b..dc0bcc4b5 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs076.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs076.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -353,7 +402,7 @@ fixed, and known as a 85
  • 86
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs077.html b/doc/pub/NeuralNet/html/._NeuralNet-bs077.html index c610ec456..b1edc81d0 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs077.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs077.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -359,7 +408,7 @@ layer.
  • 86
  • 87
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs078.html b/doc/pub/NeuralNet/html/._NeuralNet-bs078.html index b3d6cd552..f455a85a1 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs078.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs078.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -351,6 +400,8 @@ classification.
  • 86
  • 87
  • 88
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs079.html b/doc/pub/NeuralNet/html/._NeuralNet-bs079.html index 5ccfc29e2..cc3e2fe20 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs079.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs079.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -383,6 +432,9 @@ plt.show()
  • 86
  • 87
  • 88
  • +
  • 89
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs080.html b/doc/pub/NeuralNet/html/._NeuralNet-bs080.html index 91e2e7667..813ed2ac9 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs080.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs080.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -354,6 +403,10 @@ X_train, X_test, Y_train, Y_test = train_tes
  • 86
  • 87
  • 88
  • +
  • 89
  • +
  • 90
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs081.html b/doc/pub/NeuralNet/html/._NeuralNet-bs081.html index e8a28e958..2fe02e70a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs081.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs081.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -482,6 +531,11 @@ class ConvolutionalNeuralNetworkTensorflow:
  • 86
  • 87
  • 88
  • +
  • 89
  • +
  • 90
  • +
  • 91
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs082.html b/doc/pub/NeuralNet/html/._NeuralNet-bs082.html index 7b237939b..7566455ed 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs082.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs082.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -367,6 +416,12 @@ CNN_tf = np.86
  • 87
  • 88
  • +
  • 89
  • +
  • 90
  • +
  • 91
  • +
  • 92
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs083.html b/doc/pub/NeuralNet/html/._NeuralNet-bs083.html index ee3a7572a..1241709bb 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs083.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs083.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -370,6 +419,13 @@ plt.show()
  • 86
  • 87
  • 88
  • +
  • 89
  • +
  • 90
  • +
  • 91
  • +
  • 92
  • +
  • 93
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs084.html b/doc/pub/NeuralNet/html/._NeuralNet-bs084.html index 5ccf7745d..a9b4a6283 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs084.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs084.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -373,6 +422,14 @@ lmbd_vals = np.
  • 86
  • 87
  • 88
  • +
  • 89
  • +
  • 90
  • +
  • 91
  • +
  • 92
  • +
  • 93
  • +
  • 94
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs085.html b/doc/pub/NeuralNet/html/._NeuralNet-bs085.html index 719eafb68..56c43a35d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs085.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs085.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -354,6 +403,15 @@ MathJax.Hub.Config({
  • 86
  • 87
  • 88
  • +
  • 89
  • +
  • 90
  • +
  • 91
  • +
  • 92
  • +
  • 93
  • +
  • 94
  • +
  • 95
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs086.html b/doc/pub/NeuralNet/html/._NeuralNet-bs086.html index 8ac538043..f4e3e342e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs086.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs086.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -367,6 +416,16 @@ plt.show()
  • 86
  • 87
  • 88
  • +
  • 89
  • +
  • 90
  • +
  • 91
  • +
  • 92
  • +
  • 93
  • +
  • 94
  • +
  • 95
  • +
  • 96
  • +
  • ...
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs087.html b/doc/pub/NeuralNet/html/._NeuralNet-bs087.html index 674788ab8..233a4f3e7 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs087.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs087.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -321,7 +370,6 @@ MathJax.Hub.Config({
  • Abstract art using convolutional neural networks
  • -

    diff --git a/doc/pub/NeuralNet/html/NeuralNet-bs.html b/doc/pub/NeuralNet/html/NeuralNet-bs.html index 77def0bb5..ddfcae71f 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-bs.html +++ b/doc/pub/NeuralNet/html/NeuralNet-bs.html @@ -174,7 +174,35 @@ Automatically generated HTML file from DocOnce source ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -299,6 +327,27 @@ MathJax.Hub.Config({
  • Final part
  • Final visualization
  • Fun links
  • +
  • Applications: solving ordinary differential equations with Neural Networks
  • +
  • Trial solution
  • +
  • More details
  • +
  • Reformulating the problem
  • +
  • Estimating errors
  • +
  • Creating a simple Deep Neural Net
  • +
  • Feedforward
  • +
  • Result after weighting
  • +
  • Output
  • +
  • Setting up the code, feed forward part
  • +
  • Backpropagation
  • +
  • Gradient Descent
  • +
  • More on GD and cost function
  • +
  • An implementation of a Deep Neural Network
  • +
  • Feed forward again
  • +
  • The final parts of the code
  • +
  • And adding Back propagation
  • +
  • Solving the ODE
  • +
  • Using neural network
  • +
  • Using a deep neural network
  • +
  • Wrapping it up
  • @@ -357,7 +406,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 88
  • +
  • 109
  • »
  • diff --git a/doc/pub/NeuralNet/html/NeuralNet-reveal.html b/doc/pub/NeuralNet/html/NeuralNet-reveal.html index e9961348d..6e4a8b736 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-reveal.html +++ b/doc/pub/NeuralNet/html/NeuralNet-reveal.html @@ -3770,6 +3770,874 @@ plt.show() +
    +

    Applications: solving ordinary differential equations with Neural Networks

    + +

    +We end our discussion on neural networks with a discussion on how to solve differential equations. Here we focus +first on the classical exponential decay in one dimension. Thereafter we switch to the Poisson equation in one dimension. + +

    +The aim is to see if we can use a neural network to solve + +

     
    +$$ +\begin{equation} +\tag{16} +g'(x) = -\gamma g(x) +\end{equation} +$$ +

     
    + +

    +where \( g(0) = g_0 \) with \( \gamma \) and \( g_0 \) being some chosen +values. This equation is an ordinary differential equation since the +function we have to solve for, \( g(x) \), is of one variable. + +

    +Here we set \( \gamma = 2 \) and \( g_0 = 10 \) but feel free to change +them and see how the neural network performs. +

    + + +
    +

    Trial solution

    + +

    +To begin with, a trial solution \( g_t(t) \) must be chosen. A general +trial solution for ordinary differential equations could be + +

     
    +$$ +g_t(x, P) = h_1(x) + h_2(x, N(x, P)), +$$ +

     
    + +

    +with \( h_1(x) \) ensuring that \( g_t(x) \) satisfies some conditions and +\( h_2(x,N(x, P)) \) an expression involving \( x \) and the output from the +neural network \( N(x,P) \) with \( P \) being the collection of the weights +and biases for each layer. + +

    +It is assumed that there are no weights and +bias at the input layer, so \( P = \{ P_{\text{hidden}}, +P_{\text{output}} \} \). If there are \( N_{\text{hidden} } \) neurons in +the hidden layer, then \( P_{\text{hidden}} \) is an \( N_{\text{hidden} } +\times 2 \) matrix. + +

    +The first column in \( P_{\text{hidden} } \) represents +the bias for each neuron in the hidden layer and the second column +represents the weigths for each neuron. If there are \( N_{\text{output} +} \) neurons in the output layer, then \( P_{\text{output}} \) is a +\( N_{\text{output} } \times (1 + N_{\text{hidden} }) \) matrix. Its first +column represents the bias of each neuron and the remaining columns +represents the weights to each neuron. +

    + + +
    +

    More details

    + +

    +We have \( g(0) = g_0 \). The trial solution must fulfill this +condition to be a proper solution of (16). + +

    +A possible way to +ensure that \( g_t(0, P) = g_0 \), is to let \( F(N(x,P)) = x\cdot N(x,P) \) +and \( A(x) = g_0 \). This gives the following trial solution: + +

     
    +$$ +\begin{equation} +g_t(x, P) = g_0 + x \cdot N(x, P). +\tag{17} +\end{equation} +$$ +

     
    +

    + + +
    +

    Reformulating the problem

    + +

    +Often, the role of a neural network is to minimize its parameters with +respect to some given error criteria. This criteria, the cost or loss +function, is a measure of how much error the output of the network has +compared to some given known answers. A reformulation of +(16) must therefore be done, such that it describes the +problem a neural network can solve. + +

    +The neural network must find the set of weigths and biases \( P \) such +that the trial solution in satisfies +(16). The trial solution has been chosen such that it +already solves the condition \( g(0) = g_0 \). What remains, is to find +\( P \) such that + +

     
    +$$ +\begin{equation} +g_t'(x, P) = - \gamma g_t(x, P) +\tag{18} +\end{equation} +$$ +

     
    + +

    +is fulfilled as best as possible. +

    + + +
    +

    Estimating errors

    + +

    +Having two sides of an equation as equal as +possible, means that the absolute or squared difference between the +sides must be as close to zero as small. In this case, the difference +squared is an appropiate measurement of how errorneous the trial +solution is with respect to \( P \) of the neural network. Therefore, the +problem our network must solve, is + +

     
    +$$ +\min_{P}\Big\{ \big(g_t'(x, P) - ( -\gamma g_t(x, P) \big)^2 \Big\} +$$ +

     
    + +

    +or, in terms of weights and biases for each layer: + +

     
    +$$ +\min_{P_{\text{hidden} }, \ P_{\text{output} }}\Big\{ \big(g_t'(x, \{ P_{\text{hidden} }, P_{\text{output} }\}) - ( -\gamma g_t(x, \{ P_{\text{hidden} }, P_{\text{output} }\}) \big)^2 \Big\} +$$ +

     
    + +

    +for an input value \( x \). +If the neural network evaluates \( g_t(x, P) \) at more avalues for \( x \), say \( N \) values \( x_i \) for \( i = 1, \dots, N \), then the total error to minimize is + +

     
    +$$ +\begin{equation} +\tag{19} +\min_{P}\Big\{\sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) \big)^2 \Big\} +\end{equation} +$$ +

     
    + +

    +Letting \( c(x, P) = \sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) +\big)^2 \) denote the cost function, the minimization problem of which +our network must solve, is + +

     
    +$$ +\min_{P} c(x, P) +$$ +

     
    + +

    +or in terms of \( P_{\text{hidden} } \) and \( P_{\text{output} } \) + +

     
    +$$ +\min_{P_{\text{hidden} }, \ P_{\text{output} }} c(x, \{P_{\text{hidden} }, P_{\text{output} }\}) +$$ +

     
    +

    + + +
    +

    Creating a simple Deep Neural Net

    + +

    +The next step is to decide how the neural net \( N(x, P) \) +should be. In this case, the neural network is made +from scratch to understand better how a neural network works, gain +more control over its architecture, and see how Autograd can be used +to simplify the implementation. + +

    +Since a deep neural network (DNN) is a neural network with more than +one hidden layer, we can first look on how to implement a neural +network. Having an implementation of a neural network at hand, an +extension of it into a deep neural network would (hopefully) be +painless. + +

    +For simplicity, we assume that the input is an array \( \vec x = +(x_1, \dots, x_N) \) with \( N \) elements. It is at these points the neural +network should find \( P \) such that it fulfills (19). +

    + + +
    +

    Feedforward

    + +

    +First, a feedforward of the inputs must be done. This means that \( \vec + x \) must be passed through an input layer, a hidden layer and a output + layer. The input layer in this case, does not need to process the + data any further. The input layer will consist of \( N_{\text{input} } \) + neurons, passing its element to each neuron in the hidden layer. The + number of neurons in the hidden layer will be \( N_{\text{hidden} } \). + +

    +For the \( i \)-th in the hidden layer with weight \( w_i^{\text{hidden} } \) +and bias \( b_i^{\text{hidden} } \), the weighting from the \( j \)-th neuron +at the input layer is: + +

     
    +$$ +\begin{aligned} +z_{i,j}^{\text{hidden}} &= b_i^{\text{hidden}} + w_i^{\text{hidden}}x_j \\ +&= +\begin{pmatrix} +b_i^{\text{hidden}} & w_i^{\text{hidden}} +\end{pmatrix} +\begin{pmatrix} +1 \\ +x_j +\end{pmatrix} +\end{aligned} +$$ +

     
    +

    + + +
    +

    Result after weighting

    + +

    +The result after weighting the input at the \( i \)-th hidden neuron can be written as a vector: +

     
    +$$ +\begin{aligned} +\vec{z}_{i}^{\text{hidden}} &= \Big( b_i^{\text{hidden}} + w_i^{\text{hidden}}x_1 , \ b_i^{\text{hidden}} + w_i^{\text{hidden}} x_2, \ \dots \, , \ b_i^{\text{hidden}} + w_i^{\text{hidden}} x_N\Big) \\ +&= +\begin{pmatrix} + b_i^{\text{hidden}} & w_i^{\text{hidden}} +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +x_1 & x_2 & \dots & x_N +\end{pmatrix} \\ +&= \vec{p}_{i, \text{hidden}}^T X +\end{aligned} +$$ +

     
    + +

    +It is the vector \( \vec{p}_{i, \text{hidden}}^T \) that defines each row +in \( P_{\text{hidden} } \), which contains the weights for the neural +network to minimize according to (19). + +

    +After having found \( \vec{z}_{i}^{\text{hidden}} \) for every neuron \( i \) +in the hidden layer, the vector will be sent to an activation function +\( a_i(\vec{z}) \). In this example, the sigmoid function has been used: + +

     
    +$$ +f(z) = \frac{1}{1 + \exp{(-z)}}. +$$ +

     
    +

    + + +
    +

    Output

    + +

    +The output $\vec{x}_i^{\text{hidden} }$from each \( i \)-th hidden neuron is: + +

     
    +$$ +\vec{x}_i^{\text{hidden} } = f\big( \vec{z}_{i}^{\text{hidden}} \big). +$$ +

     
    + +

    +The outputs \( \vec{x}_i^{\text{hidden} } \) are then sent to the output layer. + +

    +The output layer consist of one neuron in this case, and combines the +output from each of the neurons in the hidden layers. The output layer +combines the results from the hidden layer using some weights \( +w_i^{\text{output}} \) and biases \( b_i^{\text{output}} \). In this case, +it is assumes that the number of neurons in the output layer is one. + +

    +The procedure of weigthing the output neuron \( j \) in the hidden layer +to the \( i \)-th neuron in the output layer is similar as for the hidden +layer described previously. + +

     
    +$$ +\begin{aligned} +z_{1,j}^{\text{output}} & = +\begin{pmatrix} +b_1^{\text{output}} & \vec{w}_1^{\text{output}} +\end{pmatrix} +\begin{pmatrix} +1 \\ +\vec{x}_j^{\text{hidden}} +\end{pmatrix} +\end{aligned} +$$ +

     
    + +

    +Expressing \( z_{1,j}^{\text{output}} \) as a vector gives the following procedure of weighting the inputs from the hidden layer: + +

     
    +$$ +\vec{z}_{1}^{\text{output}} = +\begin{pmatrix} +b_1^{\text{output}} & \vec{w}_1^{\text{output}} +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +\vec{x}_1^{\text{hidden}} & \vec{x}_2^{\text{hidden}} & \dots & \vec{x}_N^{\text{hidden}} +\end{pmatrix} +$$ +

     
    + +

    +In this case we seek a continous range of values since we are +approximating a function. This means that after computing +\( \vec{z}_{1}^{\text{output}} \) the neural network has finished its +feedforward step, and \( \vec{z}_{1}^{\text{output}} \) is the final +output of the network. +

    + + +
    +

    Setting up the code, feed forward part

    +

    + + +

    # Note that we use the  numpy wrapper for Autograd (see the gradient descent  slides)
    +import autograd.numpy as np
    +from autograd import grad, elementwise_grad
    +import autograd.numpy.random as npr
    +from matplotlib import pyplot as plt
    +
    +def sigmoid(z):
    +    return 1/(1 + np.exp(-z))
    +
    +def neural_network(params, x):
    +    
    +    # Find the weights (including and biases) for the hidden and output layer.
    +    # Assume that params is a list of parameters for each layer. 
    +    # The biases are the first element for each array in params, 
    +    # and the weights are the remaning elements in each array in params.   
    +    
    +    w_hidden = params[0]
    +    w_output = params[1]
    +
    +    # Assumes input x being an one-dimensional array
    +    num_values = np.size(x)
    +    x = x.reshape(-1, num_values)
    +    
    +    # Assume that the input layer does nothing to the input x
    +    x_input = x
    +
    +    ## Hidden layer:
    +    
    +    # Add a row of ones to include bias
    +    x_input = np.concatenate((np.ones((1,num_values)), x_input ), axis = 0)
    +    
    +    z_hidden = np.matmul(w_hidden, x_input)
    +    x_hidden = sigmoid(z_hidden)
    +
    +    ## Output layer:
    +    
    +    # Include bias:
    +    x_hidden = np.concatenate((np.ones((1,num_values)), x_hidden ), axis = 0)
    +
    +    z_output = np.matmul(w_output, x_hidden)
    +    x_output = z_output
    +
    +    return x_output
    +
    +
    + + +
    +

    Backpropagation

    + +

    +Now that feedforward can be done, the next step is to decide how the +parameters should change such that they minimize the cost function. + +

    +Recall that the chosen cost function for this problem is + +

     
    +$$ +c(x, P) = \sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) \big)^2 +$$ +

     
    + +

    +In order to minimize it, an optimalization method must be chosen. + +

    +Here, gradient descent with a constant step size has been chosen. + +

    +Before looking at the gradient descent method, let us set up the cost +function along with the right ride of the ODE and trial solution. + +

    + + +

    # The trial solution using the deep neural network:
    +def g_trial(x,params, g0 = 10):
    +    return g0 + x*neural_network(params,x)
    +
    +# The right side of the ODE:
    +def g(x, g_trial, gamma = 2):
    +    return -gamma*g_trial
    +
    +# The cost function:
    +def cost_function(P, x):
    +    
    +    # Evaluate the trial function with the current parameters P
    +    g_t = g_trial(x,P)
    +    
    +    # Find the derivative w.r.t x of the neural network
    +    d_net_out = elementwise_grad(neural_network,1)(P,x) 
    +    
    +    # Find the derivative w.r.t x of the trial function
    +    d_g_t = elementwise_grad(g_trial,0)(x,P)  
    +    
    +    # The right side of the ODE 
    +    func = g(x, g_t)
    +
    +    err_sqr = (d_g_t - func)**2
    +    cost_sum = np.sum(err_sqr)
    +    
    +    return cost_sum
    +
    +
    + + +
    +

    Gradient Descent

    + +

    +The idea of the gradient descent algorithm is to update parameters in +direction where the cost function decreases goes to a minimum. + +

    +In general, the update of some parameters \( \vec \omega \) given a cost +function defined by some weights \( \vec \omega \), \( c(x, \vec \omega) \), +goes as follows: + +

     
    +$$ +\vec \omega_{\text{new} } = \vec \omega - \lambda \nabla_{\vec \omega} c(x, \vec \omega), +$$ +

     
    + +

    +for a number of iterations or until $ \big|\big| \vec +\omega_{\text{new} } - \vec \omega \big|\big|$ is smaller than some +given tolerance. + +

    +The value of \( \lambda \) decides how large steps the algorithm must take +in the direction of $ \nabla_{\vec \omega} c(x, \vec \omega)$. The +notatation \( \nabla_{\vec \omega} \) denotes the gradient with respect to +the elements in \( \vec \omega \). +

    + + +
    +

    More on GD and cost function

    + +

    +In our case, we have to minimize the cost function \( c(x, P) \) with +respect to the two sets of weights and bisases, that is for the hidden +layer \( P_{\text{hidden} } \) and for the ouput layer \( P_{\text{output} +} \) . + +

    +This means that \( P_{\text{hidden} } \) and \( P_{\text{output} } \) is +updated by + +

     
    +$$ +\begin{aligned} +P_{\text{hidden},\text{new}} &= P_{\text{hidden}} - \lambda \nabla_{P_{\text{hidden}}} c(x, P) \\ +P_{\text{output},\text{new}} &= P_{\text{output}} - \lambda \nabla_{P_{\text{output}}} c(x, P) +\end{aligned} +$$ +

     
    + +

    +This might look like a cumberstone to set up the correct expression +for finding the gradients. Luckily, Autograd comes to the rescue. + +

    + + +

    def solve_ode_neural_network(x, num_neurons_hidden, num_iter, lmb):
    +    ## Set up initial weigths and biases 
    +    
    +    # For the hidden layer
    +    p0 = npr.randn(num_neurons_hidden, 2 ) 
    +
    +    # For the output layer
    +    p1 = npr.randn(1, num_neurons_hidden + 1 ) # +1 since bias is included
    +
    +    P = [p0, p1]
    +
    +    print('Initial cost: %g'%cost_function(P, x))
    +    
    +    ## Start finding the optimal weigths using gradient descent
    +    
    +    # Find the Python function that represents the gradient of the cost function
    +    # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer
    +    cost_function_grad = grad(cost_function,0)
    +    
    +    # Let the update be done num_iter times
    +    for i in range(num_iter):
    +        # Evaluate the gradient at the current weights and biases in P. 
    +        # The cost_grad consist now of two arrays; 
    +        # one for the gradient w.r.t P_hidden and 
    +        # one for the gradient w.r.t P_output
    +        cost_grad =  cost_function_grad(P, x)
    +    
    +        P[0] = P[0] - lmb * cost_grad[0]
    +        P[1] = P[1] - lmb * cost_grad[1]
    +
    +    print('Final cost: %g'%cost_function(P, x))
    +    
    +    return P
    +
    +
    + + +
    +

    An implementation of a Deep Neural Network

    + +

    +As previously stated, a Deep Neural Network (DNN) follows the same +concept of a neural network, but having more than one hidden +layer. Suppose that the network has \( N_{\text{hidden}} \) hidden layers +where the \( l \)-th layer has \( N_{\text{hidden}}^{(l)} \) neurons. The +input is still assumed to be an array of size \( 1 \times N \). The +network must now try to optimalize its output with respect to the +collection of weigths and biases \( P = \big\{P_{\text{input} }, \ +P_{\text{hidden} }^{(1)}, \ P_{\text{hidden} }^{(2)}, \ \dots , \ +P_{\text{hidden} }^{(N_{\text{hidden}})}, \ P_{\text{output} }\big\} \). +

    + + +
    +

    Feed forward again

    + +

    +The feedforward step is similar to as for the neural netowork, but now considering more than one hidden layer. + +

    +The \( i \)-th neuron at layer \( l \) recieves the result +\( \vec{x}_j^{(l-1),\text{hidden} } \) from the \( j \)-th neuron at layer +\( l-1 \). The \( i \)-th neuron at layer \( l \) weights all of the elements in +\( \vec{x}_j^{(l-1),\text{hidden} } \) with a weight vector \( \vec +w_{i,j}^{(l), \ \text{hidden} } \) with as many weigths as there are +elements in$\vec{x}_j^{(l-1),\text{hidden} }$, and adds a bias +\( b_i^{(l), \ \text{hidden} } \): + +

     
    +$$ +\begin{aligned} +z_{i,j}^{(l),\ \text{hidden}} &= b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_j^{(l-1),\text{hidden} } \\ +&= +\begin{pmatrix} +b_i^{(l), \ \text{hidden}} & \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T +\end{pmatrix} +\begin{pmatrix} +1 \\ +\vec{x}_j^{(l-1),\text{hidden} } +\end{pmatrix} +\end{aligned} +$$ +

     
    + +

    +The output from the \( i \)-th neuron at the hidden layer \( l \) becomes a vector \( \vec{z}_{i}^{(l),\ \text{hidden}} \): + +

     
    +$$ +\begin{aligned} +\vec{z}_{i}^{(l),\ \text{hidden}} &= \Big( b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_1^{(l-1),\text{hidden} }, \ \dots \ , \ b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\text{hidden} } \Big) \\ +&= +\begin{pmatrix} +b_i^{(l), \ \text{hidden}} & \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +\vec{x}_{1}^{(l-1),\text{hidden} } & \vec{x}_{2}^{(l-1),\text{hidden} } & \dots & \vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\text{hidden} } +\end{pmatrix} +\end{aligned} +$$ +

     
    +

    + + +
    +

    The final parts of the code

    +

    + + +

    def deep_neural_network(deep_params, x):
    +    # N_hidden is the number of hidden layers  
    +    N_hidden = np.size(deep_params) - 1 # -1 since params consist of parameters to all the hidden layers AND the output layer
    +        
    +    # Assumes input x being an one-dimensional array
    +    num_values = np.size(x)
    +    x = x.reshape(-1, num_values)
    +    
    +    # Assume that the input layer does nothing to the input x
    +    x_input = x
    +    
    +    # Due to multiple hidden layers, define a variable referencing to the
    +    # output of the previous layer:
    +    x_prev = x_input 
    +    
    +    ## Hidden layers:
    +    
    +    for l in range(N_hidden):
    +        # From the list of parameters P; find the correct weigths and bias for this layer
    +        w_hidden = deep_params[l]
    +        
    +        # Add a row of ones to include bias
    +        x_prev = np.concatenate((np.ones((1,num_values)), x_prev ), axis = 0)
    +
    +        z_hidden = np.matmul(w_hidden, x_prev)
    +        x_hidden = sigmoid(z_hidden)
    +
    +        # Update x_prev such that next layer can use the output from this layer
    +        x_prev = x_hidden 
    +
    +    ## Output layer:
    +    
    +    # Get the weights and bias for this layer
    +    w_output = deep_params[-1]
    +    
    +    # Include bias:
    +    x_prev = np.concatenate((np.ones((1,num_values)), x_prev), axis = 0)
    +
    +    z_output = np.matmul(w_output, x_prev)
    +    x_output = z_output
    +
    +    return x_output
    +
    +
    + + +
    +

    And adding Back propagation

    + +

    +This step is very similar for the neural network. The idea in this +step is the same as for the neural network, but with more parameters +to update for. Again there is no need for computing the gradients +analytically since Autograd does the work for us. + +

    + + +

    # The trial solution using the deep neural network:
    +def g_trial_deep(x,params, g0 = 10):
    +    return g0 + x*deep_neural_network(params,x)
    +
    +# The same cost function as for the neural network, but calls deep_neural_network instead.
    +def cost_function_deep(P, x):
    +    
    +    # Evaluate the trial function with the current parameters P
    +    g_t = g_trial_deep(x,P)
    +    
    +    # Find the derivative w.r.t x of the neural network
    +    d_net_out = elementwise_grad(deep_neural_network,1)(P,x) 
    +    
    +    # Find the derivative w.r.t x of the trial function
    +    d_g_t = elementwise_grad(g_trial_deep,0)(x,P)  
    +    
    +    # The right side of the ODE 
    +    func = g(x, g_t)
    +
    +    err_sqr = (d_g_t - func)**2
    +    cost_sum = np.sum(err_sqr)
    +    
    +    return cost_sum
    +
    +def solve_ode_deep_neural_network(x, num_neurons, num_iter, lmb):
    +    # num_hidden_neurons is now a list of number of neurons within each hidden layer
    +
    +    # Find the number of hidden layers:
    +    N_hidden = np.size(num_neurons)
    +    
    +    ## Set up initial weigths and biases 
    +    
    +    # Initialize the list of parameters:
    +    P = [None]*(N_hidden + 1) # + 1 to include the output layer
    +
    +    P[0] = npr.randn(num_neurons[0], 2 ) 
    +    for l in range(1,N_hidden):
    +        P[l] = npr.randn(num_neurons[l], num_neurons[l-1] + 1) # +1 to include bias 
    +    
    +    # For the output layer
    +    P[-1] = npr.randn(1, num_neurons[-1] + 1 ) # +1 since bias is included
    +
    +    print('Initial cost: %g'%cost_function_deep(P, x))
    +    
    +    ## Start finding the optimal weigths using gradient descent
    +    
    +    # Find the Python function that represents the gradient of the cost function
    +    # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer
    +    cost_function_deep_grad = grad(cost_function_deep,0)
    +    
    +    # Let the update be done num_iter times
    +    for i in range(num_iter):
    +        # Evaluate the gradient at the current weights and biases in P. 
    +        # The cost_grad consist now of N_hidden + 1 arrays; the gradient w.r.t the weights and biases
    +        # in the hidden layers and output layers evaluated at x.
    +        cost_deep_grad =  cost_function_deep_grad(P, x)
    +        
    +        for l in range(N_hidden+1):
    +            P[l] = P[l] - lmb * cost_deep_grad[l]
    +
    +    print('Final cost: %g'%cost_function_deep(P, x))
    +    
    +    return P
    +
    +
    + + +
    +

    Solving the ODE

    + +

    +Finally, having set up the networks we are ready to use them to solve the ODE problem. +We add the analytical solution + +

    + + +

    def g_analytic(x, gamma = 2, g0 = 10):
    +    return g0*np.exp(-gamma*x)
    +
    +
    + + +
    +

    Using neural network

    + +

    +The code below solves the ODE using a neural network. The number of +values for the input \( \vec x \) is 10, number of hidden neurons in the +hidden layer being 10 and th step size used in gradien descent +\( \lambda = 0.001 \). The program updates the weights and biases in the +network num_iter times. Finally, it plots the results from using the +neural network along with the analytical solution. + +

    + + +

    npr.seed(15)
    +
    +## Decide the vales of arguments to the function to solve
    +N = 10
    +x = np.linspace(0, 1, N)
    +
    +## Set up the initial parameters
    +num_hidden_neurons = 10
    +num_iter = 10000
    +lmb = 0.001
    +
    +P = solve_ode_neural_network(x, num_hidden_neurons, num_iter, lmb)
    +
    +res = g_trial(x,P) 
    +res_analytical = g_analytic(x)
    +
    +print('Max absolute difference: %g'%np.max(np.abs(res - res_analytical)))
    +
    +plt.figure(figsize=(10,10))
    +
    +plt.title('Performance of neural network solving an ODE compared to the analytical solution')
    +plt.plot(x, res_analytical)
    +plt.plot(x, res[0,:])
    +plt.legend(['analytical','nn'])
    +plt.xlabel('x')
    +plt.ylabel('g(x)')
    +plt.show()
    +
    +
    + + +
    +

    Using a deep neural network

    + +

    + + +

    npr.seed(15)
    +
    +## Decide the vales of arguments to the function to solve
    +N = 10
    +x = np.linspace(0, 1, N)
    +
    +## Set up the initial parameters
    +num_hidden_neurons = np.array([10,10])
    +num_iter = 10000
    +lmb = 0.001
    +
    +P = solve_ode_deep_neural_network(x, num_hidden_neurons, num_iter, lmb)
    +
    +res = g_trial_deep(x,P) 
    +res_analytical = g_analytic(x)
    +
    +plt.figure(figsize=(10,10))
    +
    +plt.title('Performance of a deep neural network solving an ODE compared to the analytical solution')
    +plt.plot(x, res_analytical)
    +plt.plot(x, res[0,:])
    +plt.legend(['analytical','dnn'])
    +plt.ylabel('g(x)')
    +plt.show()
    +
    +
    + + +
    +

    Wrapping it up

    + +

    +By rewriting the ODE as a minimization problem, it was possible to +solve equation using either a neural network (one hidden layer) or a +deep neural network (more than one hidden layers). How well the +network performed is measured by a specified cost function, which is +the function the network tries to minimize. Using a trial solution +which satisfies the additional condition and being defined by using +the output from the network in some way, the minimization problem +could be explicitly defined for out network to solve. The proposed +solution from the network is then the trial solution with parameters, +that is weights and biases within each layer in the network, such that +the solution minimizes the cost function. +

    + + diff --git a/doc/pub/NeuralNet/html/NeuralNet-solarized.html b/doc/pub/NeuralNet/html/NeuralNet-solarized.html index 7dd813788..ca1df75cf 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-solarized.html +++ b/doc/pub/NeuralNet/html/NeuralNet-solarized.html @@ -194,7 +194,35 @@ div { text-align: justify; text-justify: inter-word; } ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -3627,6 +3655,824 @@ plt.show()
  • Abstract art using convolutional neural networks
  • +









    + +

    Applications: solving ordinary differential equations with Neural Networks

    + +

    +We end our discussion on neural networks with a discussion on how to solve differential equations. Here we focus +first on the classical exponential decay in one dimension. Thereafter we switch to the Poisson equation in one dimension. + +

    +The aim is to see if we can use a neural network to solve + +$$ +\begin{equation} +\label{eq:ode} +g'(x) = -\gamma g(x) +\end{equation} +$$ + +

    +where \( g(0) = g_0 \) with \( \gamma \) and \( g_0 \) being some chosen +values. This equation is an ordinary differential equation since the +function we have to solve for, \( g(x) \), is of one variable. + +

    +Here we set \( \gamma = 2 \) and \( g_0 = 10 \) but feel free to change +them and see how the neural network performs. + +

    +









    + +

    Trial solution

    + +

    +To begin with, a trial solution \( g_t(t) \) must be chosen. A general +trial solution for ordinary differential equations could be + +$$ +g_t(x, P) = h_1(x) + h_2(x, N(x, P)), +$$ + +

    +with \( h_1(x) \) ensuring that \( g_t(x) \) satisfies some conditions and +\( h_2(x,N(x, P)) \) an expression involving \( x \) and the output from the +neural network \( N(x,P) \) with \( P \) being the collection of the weights +and biases for each layer. + +

    +It is assumed that there are no weights and +bias at the input layer, so \( P = \{ P_{\text{hidden}}, +P_{\text{output}} \} \). If there are \( N_{\text{hidden} } \) neurons in +the hidden layer, then \( P_{\text{hidden}} \) is an \( N_{\text{hidden} } +\times 2 \) matrix. + +

    +The first column in \( P_{\text{hidden} } \) represents +the bias for each neuron in the hidden layer and the second column +represents the weigths for each neuron. If there are \( N_{\text{output} +} \) neurons in the output layer, then \( P_{\text{output}} \) is a +\( N_{\text{output} } \times (1 + N_{\text{hidden} }) \) matrix. Its first +column represents the bias of each neuron and the remaining columns +represents the weights to each neuron. + +

    +









    + +

    More details

    + +

    +We have \( g(0) = g_0 \). The trial solution must fulfill this +condition to be a proper solution of \eqref{eq:ode}. + +

    +A possible way to +ensure that \( g_t(0, P) = g_0 \), is to let \( F(N(x,P)) = x\cdot N(x,P) \) +and \( A(x) = g_0 \). This gives the following trial solution: + +$$ +\begin{equation} +g_t(x, P) = g_0 + x \cdot N(x, P). +\label{_auto11} +\end{equation} +$$ + +

    +









    + +

    Reformulating the problem

    + +

    +Often, the role of a neural network is to minimize its parameters with +respect to some given error criteria. This criteria, the cost or loss +function, is a measure of how much error the output of the network has +compared to some given known answers. A reformulation of +\eqref{eq:ode} must therefore be done, such that it describes the +problem a neural network can solve. + +

    +The neural network must find the set of weigths and biases \( P \) such +that the trial solution in satisfies +\eqref{eq:ode}. The trial solution has been chosen such that it +already solves the condition \( g(0) = g_0 \). What remains, is to find +\( P \) such that + +$$ +\begin{equation} +g_t'(x, P) = - \gamma g_t(x, P) +\label{_auto12} +\end{equation} +$$ + +

    +is fulfilled as best as possible. + +

    +









    + +

    Estimating errors

    + +

    +Having two sides of an equation as equal as +possible, means that the absolute or squared difference between the +sides must be as close to zero as small. In this case, the difference +squared is an appropiate measurement of how errorneous the trial +solution is with respect to \( P \) of the neural network. Therefore, the +problem our network must solve, is + +$$ +\min_{P}\Big\{ \big(g_t'(x, P) - ( -\gamma g_t(x, P) \big)^2 \Big\} +$$ + +

    +or, in terms of weights and biases for each layer: + +$$ +\min_{P_{\text{hidden} }, \ P_{\text{output} }}\Big\{ \big(g_t'(x, \{ P_{\text{hidden} }, P_{\text{output} }\}) - ( -\gamma g_t(x, \{ P_{\text{hidden} }, P_{\text{output} }\}) \big)^2 \Big\} +$$ + +

    +for an input value \( x \). +If the neural network evaluates \( g_t(x, P) \) at more avalues for \( x \), say \( N \) values \( x_i \) for \( i = 1, \dots, N \), then the total error to minimize is + +$$ +\begin{equation} +\label{eq:min} +\min_{P}\Big\{\sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) \big)^2 \Big\} +\end{equation} +$$ + +

    +Letting \( c(x, P) = \sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) +\big)^2 \) denote the cost function, the minimization problem of which +our network must solve, is + +$$ +\min_{P} c(x, P) +$$ + +

    +or in terms of \( P_{\text{hidden} } \) and \( P_{\text{output} } \) + +$$ +\min_{P_{\text{hidden} }, \ P_{\text{output} }} c(x, \{P_{\text{hidden} }, P_{\text{output} }\}) +$$ + +

    +









    + +

    Creating a simple Deep Neural Net

    + +

    +The next step is to decide how the neural net \( N(x, P) \) +should be. In this case, the neural network is made +from scratch to understand better how a neural network works, gain +more control over its architecture, and see how Autograd can be used +to simplify the implementation. + +

    +Since a deep neural network (DNN) is a neural network with more than +one hidden layer, we can first look on how to implement a neural +network. Having an implementation of a neural network at hand, an +extension of it into a deep neural network would (hopefully) be +painless. + +

    +For simplicity, we assume that the input is an array \( \vec x = +(x_1, \dots, x_N) \) with \( N \) elements. It is at these points the neural +network should find \( P \) such that it fulfills \eqref{eq:min}. + +

    +









    + +

    Feedforward

    + +

    +First, a feedforward of the inputs must be done. This means that \( \vec + x \) must be passed through an input layer, a hidden layer and a output + layer. The input layer in this case, does not need to process the + data any further. The input layer will consist of \( N_{\text{input} } \) + neurons, passing its element to each neuron in the hidden layer. The + number of neurons in the hidden layer will be \( N_{\text{hidden} } \). + +

    +For the \( i \)-th in the hidden layer with weight \( w_i^{\text{hidden} } \) +and bias \( b_i^{\text{hidden} } \), the weighting from the \( j \)-th neuron +at the input layer is: + +$$ +\begin{aligned} +z_{i,j}^{\text{hidden}} &= b_i^{\text{hidden}} + w_i^{\text{hidden}}x_j \\ +&= +\begin{pmatrix} +b_i^{\text{hidden}} & w_i^{\text{hidden}} +\end{pmatrix} +\begin{pmatrix} +1 \\ +x_j +\end{pmatrix} +\end{aligned} +$$ + +

    + + +

    Result after weighting

    + +

    +The result after weighting the input at the \( i \)-th hidden neuron can be written as a vector: +$$ +\begin{aligned} +\vec{z}_{i}^{\text{hidden}} &= \Big( b_i^{\text{hidden}} + w_i^{\text{hidden}}x_1 , \ b_i^{\text{hidden}} + w_i^{\text{hidden}} x_2, \ \dots \, , \ b_i^{\text{hidden}} + w_i^{\text{hidden}} x_N\Big) \\ +&= +\begin{pmatrix} + b_i^{\text{hidden}} & w_i^{\text{hidden}} +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +x_1 & x_2 & \dots & x_N +\end{pmatrix} \\ +&= \vec{p}_{i, \text{hidden}}^T X +\end{aligned} +$$ + +

    +It is the vector \( \vec{p}_{i, \text{hidden}}^T \) that defines each row +in \( P_{\text{hidden} } \), which contains the weights for the neural +network to minimize according to \eqref{eq:min}. + +

    +After having found \( \vec{z}_{i}^{\text{hidden}} \) for every neuron \( i \) +in the hidden layer, the vector will be sent to an activation function +\( a_i(\vec{z}) \). In this example, the sigmoid function has been used: + +$$ +f(z) = \frac{1}{1 + \exp{(-z)}}. +$$ + +

    +









    + +

    Output

    + +

    +The output $\vec{x}_i^{\text{hidden} }$from each \( i \)-th hidden neuron is: + +$$ +\vec{x}_i^{\text{hidden} } = f\big( \vec{z}_{i}^{\text{hidden}} \big). +$$ + +

    +The outputs \( \vec{x}_i^{\text{hidden} } \) are then sent to the output layer. + +

    +The output layer consist of one neuron in this case, and combines the +output from each of the neurons in the hidden layers. The output layer +combines the results from the hidden layer using some weights \( +w_i^{\text{output}} \) and biases \( b_i^{\text{output}} \). In this case, +it is assumes that the number of neurons in the output layer is one. + +

    +The procedure of weigthing the output neuron \( j \) in the hidden layer +to the \( i \)-th neuron in the output layer is similar as for the hidden +layer described previously. + +$$ +\begin{aligned} +z_{1,j}^{\text{output}} & = +\begin{pmatrix} +b_1^{\text{output}} & \vec{w}_1^{\text{output}} +\end{pmatrix} +\begin{pmatrix} +1 \\ +\vec{x}_j^{\text{hidden}} +\end{pmatrix} +\end{aligned} +$$ + +

    +Expressing \( z_{1,j}^{\text{output}} \) as a vector gives the following procedure of weighting the inputs from the hidden layer: + +$$ +\vec{z}_{1}^{\text{output}} = +\begin{pmatrix} +b_1^{\text{output}} & \vec{w}_1^{\text{output}} +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +\vec{x}_1^{\text{hidden}} & \vec{x}_2^{\text{hidden}} & \dots & \vec{x}_N^{\text{hidden}} +\end{pmatrix} +$$ + +

    +In this case we seek a continous range of values since we are +approximating a function. This means that after computing +\( \vec{z}_{1}^{\text{output}} \) the neural network has finished its +feedforward step, and \( \vec{z}_{1}^{\text{output}} \) is the final +output of the network. + +

    +









    + +

    Setting up the code, feed forward part

    +

    + + +

    # Note that we use the  numpy wrapper for Autograd (see the gradient descent  slides)
    +import autograd.numpy as np
    +from autograd import grad, elementwise_grad
    +import autograd.numpy.random as npr
    +from matplotlib import pyplot as plt
    +
    +def sigmoid(z):
    +    return 1/(1 + np.exp(-z))
    +
    +def neural_network(params, x):
    +    
    +    # Find the weights (including and biases) for the hidden and output layer.
    +    # Assume that params is a list of parameters for each layer. 
    +    # The biases are the first element for each array in params, 
    +    # and the weights are the remaning elements in each array in params.   
    +    
    +    w_hidden = params[0]
    +    w_output = params[1]
    +
    +    # Assumes input x being an one-dimensional array
    +    num_values = np.size(x)
    +    x = x.reshape(-1, num_values)
    +    
    +    # Assume that the input layer does nothing to the input x
    +    x_input = x
    +
    +    ## Hidden layer:
    +    
    +    # Add a row of ones to include bias
    +    x_input = np.concatenate((np.ones((1,num_values)), x_input ), axis = 0)
    +    
    +    z_hidden = np.matmul(w_hidden, x_input)
    +    x_hidden = sigmoid(z_hidden)
    +
    +    ## Output layer:
    +    
    +    # Include bias:
    +    x_hidden = np.concatenate((np.ones((1,num_values)), x_hidden ), axis = 0)
    +
    +    z_output = np.matmul(w_output, x_hidden)
    +    x_output = z_output
    +
    +    return x_output
    +
    +

    +









    + +

    Backpropagation

    + +

    +Now that feedforward can be done, the next step is to decide how the +parameters should change such that they minimize the cost function. + +

    +Recall that the chosen cost function for this problem is + +$$ +c(x, P) = \sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) \big)^2 +$$ + +

    +In order to minimize it, an optimalization method must be chosen. + +

    +Here, gradient descent with a constant step size has been chosen. + +

    +Before looking at the gradient descent method, let us set up the cost +function along with the right ride of the ODE and trial solution. + +

    + + +

    # The trial solution using the deep neural network:
    +def g_trial(x,params, g0 = 10):
    +    return g0 + x*neural_network(params,x)
    +
    +# The right side of the ODE:
    +def g(x, g_trial, gamma = 2):
    +    return -gamma*g_trial
    +
    +# The cost function:
    +def cost_function(P, x):
    +    
    +    # Evaluate the trial function with the current parameters P
    +    g_t = g_trial(x,P)
    +    
    +    # Find the derivative w.r.t x of the neural network
    +    d_net_out = elementwise_grad(neural_network,1)(P,x) 
    +    
    +    # Find the derivative w.r.t x of the trial function
    +    d_g_t = elementwise_grad(g_trial,0)(x,P)  
    +    
    +    # The right side of the ODE 
    +    func = g(x, g_t)
    +
    +    err_sqr = (d_g_t - func)**2
    +    cost_sum = np.sum(err_sqr)
    +    
    +    return cost_sum
    +
    +

    +









    + +

    Gradient Descent

    + +

    +The idea of the gradient descent algorithm is to update parameters in +direction where the cost function decreases goes to a minimum. + +

    +In general, the update of some parameters \( \vec \omega \) given a cost +function defined by some weights \( \vec \omega \), \( c(x, \vec \omega) \), +goes as follows: + +$$ +\vec \omega_{\text{new} } = \vec \omega - \lambda \nabla_{\vec \omega} c(x, \vec \omega), +$$ + +

    +for a number of iterations or until $ \big|\big| \vec +\omega_{\text{new} } - \vec \omega \big|\big|$ is smaller than some +given tolerance. + +

    +The value of \( \lambda \) decides how large steps the algorithm must take +in the direction of $ \nabla_{\vec \omega} c(x, \vec \omega)$. The +notatation \( \nabla_{\vec \omega} \) denotes the gradient with respect to +the elements in \( \vec \omega \). + +

    +









    + +

    More on GD and cost function

    + +

    +In our case, we have to minimize the cost function \( c(x, P) \) with +respect to the two sets of weights and bisases, that is for the hidden +layer \( P_{\text{hidden} } \) and for the ouput layer \( P_{\text{output} +} \) . + +

    +This means that \( P_{\text{hidden} } \) and \( P_{\text{output} } \) is +updated by + +$$ +\begin{aligned} +P_{\text{hidden},\text{new}} &= P_{\text{hidden}} - \lambda \nabla_{P_{\text{hidden}}} c(x, P) \\ +P_{\text{output},\text{new}} &= P_{\text{output}} - \lambda \nabla_{P_{\text{output}}} c(x, P) +\end{aligned} +$$ + +

    +This might look like a cumberstone to set up the correct expression +for finding the gradients. Luckily, Autograd comes to the rescue. + +

    + + +

    def solve_ode_neural_network(x, num_neurons_hidden, num_iter, lmb):
    +    ## Set up initial weigths and biases 
    +    
    +    # For the hidden layer
    +    p0 = npr.randn(num_neurons_hidden, 2 ) 
    +
    +    # For the output layer
    +    p1 = npr.randn(1, num_neurons_hidden + 1 ) # +1 since bias is included
    +
    +    P = [p0, p1]
    +
    +    print('Initial cost: %g'%cost_function(P, x))
    +    
    +    ## Start finding the optimal weigths using gradient descent
    +    
    +    # Find the Python function that represents the gradient of the cost function
    +    # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer
    +    cost_function_grad = grad(cost_function,0)
    +    
    +    # Let the update be done num_iter times
    +    for i in range(num_iter):
    +        # Evaluate the gradient at the current weights and biases in P. 
    +        # The cost_grad consist now of two arrays; 
    +        # one for the gradient w.r.t P_hidden and 
    +        # one for the gradient w.r.t P_output
    +        cost_grad =  cost_function_grad(P, x)
    +    
    +        P[0] = P[0] - lmb * cost_grad[0]
    +        P[1] = P[1] - lmb * cost_grad[1]
    +
    +    print('Final cost: %g'%cost_function(P, x))
    +    
    +    return P
    +
    +

    +









    + +

    An implementation of a Deep Neural Network

    + +

    +As previously stated, a Deep Neural Network (DNN) follows the same +concept of a neural network, but having more than one hidden +layer. Suppose that the network has \( N_{\text{hidden}} \) hidden layers +where the \( l \)-th layer has \( N_{\text{hidden}}^{(l)} \) neurons. The +input is still assumed to be an array of size \( 1 \times N \). The +network must now try to optimalize its output with respect to the +collection of weigths and biases \( P = \big\{P_{\text{input} }, \ +P_{\text{hidden} }^{(1)}, \ P_{\text{hidden} }^{(2)}, \ \dots , \ +P_{\text{hidden} }^{(N_{\text{hidden}})}, \ P_{\text{output} }\big\} \). + +

    +









    + +

    Feed forward again

    + +

    +The feedforward step is similar to as for the neural netowork, but now considering more than one hidden layer. + +

    +The \( i \)-th neuron at layer \( l \) recieves the result +\( \vec{x}_j^{(l-1),\text{hidden} } \) from the \( j \)-th neuron at layer +\( l-1 \). The \( i \)-th neuron at layer \( l \) weights all of the elements in +\( \vec{x}_j^{(l-1),\text{hidden} } \) with a weight vector \( \vec +w_{i,j}^{(l), \ \text{hidden} } \) with as many weigths as there are +elements in$\vec{x}_j^{(l-1),\text{hidden} }$, and adds a bias +\( b_i^{(l), \ \text{hidden} } \): + +$$ +\begin{aligned} +z_{i,j}^{(l),\ \text{hidden}} &= b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_j^{(l-1),\text{hidden} } \\ +&= +\begin{pmatrix} +b_i^{(l), \ \text{hidden}} & \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T +\end{pmatrix} +\begin{pmatrix} +1 \\ +\vec{x}_j^{(l-1),\text{hidden} } +\end{pmatrix} +\end{aligned} +$$ + +

    +The output from the \( i \)-th neuron at the hidden layer \( l \) becomes a vector \( \vec{z}_{i}^{(l),\ \text{hidden}} \): + +$$ +\begin{aligned} +\vec{z}_{i}^{(l),\ \text{hidden}} &= \Big( b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_1^{(l-1),\text{hidden} }, \ \dots \ , \ b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\text{hidden} } \Big) \\ +&= +\begin{pmatrix} +b_i^{(l), \ \text{hidden}} & \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +\vec{x}_{1}^{(l-1),\text{hidden} } & \vec{x}_{2}^{(l-1),\text{hidden} } & \dots & \vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\text{hidden} } +\end{pmatrix} +\end{aligned} +$$ + +

    +









    + +

    The final parts of the code

    +

    + + +

    def deep_neural_network(deep_params, x):
    +    # N_hidden is the number of hidden layers  
    +    N_hidden = np.size(deep_params) - 1 # -1 since params consist of parameters to all the hidden layers AND the output layer
    +        
    +    # Assumes input x being an one-dimensional array
    +    num_values = np.size(x)
    +    x = x.reshape(-1, num_values)
    +    
    +    # Assume that the input layer does nothing to the input x
    +    x_input = x
    +    
    +    # Due to multiple hidden layers, define a variable referencing to the
    +    # output of the previous layer:
    +    x_prev = x_input 
    +    
    +    ## Hidden layers:
    +    
    +    for l in range(N_hidden):
    +        # From the list of parameters P; find the correct weigths and bias for this layer
    +        w_hidden = deep_params[l]
    +        
    +        # Add a row of ones to include bias
    +        x_prev = np.concatenate((np.ones((1,num_values)), x_prev ), axis = 0)
    +
    +        z_hidden = np.matmul(w_hidden, x_prev)
    +        x_hidden = sigmoid(z_hidden)
    +
    +        # Update x_prev such that next layer can use the output from this layer
    +        x_prev = x_hidden 
    +
    +    ## Output layer:
    +    
    +    # Get the weights and bias for this layer
    +    w_output = deep_params[-1]
    +    
    +    # Include bias:
    +    x_prev = np.concatenate((np.ones((1,num_values)), x_prev), axis = 0)
    +
    +    z_output = np.matmul(w_output, x_prev)
    +    x_output = z_output
    +
    +    return x_output
    +
    +

    +









    + +

    And adding Back propagation

    + +

    +This step is very similar for the neural network. The idea in this +step is the same as for the neural network, but with more parameters +to update for. Again there is no need for computing the gradients +analytically since Autograd does the work for us. + +

    + + +

    # The trial solution using the deep neural network:
    +def g_trial_deep(x,params, g0 = 10):
    +    return g0 + x*deep_neural_network(params,x)
    +
    +# The same cost function as for the neural network, but calls deep_neural_network instead.
    +def cost_function_deep(P, x):
    +    
    +    # Evaluate the trial function with the current parameters P
    +    g_t = g_trial_deep(x,P)
    +    
    +    # Find the derivative w.r.t x of the neural network
    +    d_net_out = elementwise_grad(deep_neural_network,1)(P,x) 
    +    
    +    # Find the derivative w.r.t x of the trial function
    +    d_g_t = elementwise_grad(g_trial_deep,0)(x,P)  
    +    
    +    # The right side of the ODE 
    +    func = g(x, g_t)
    +
    +    err_sqr = (d_g_t - func)**2
    +    cost_sum = np.sum(err_sqr)
    +    
    +    return cost_sum
    +
    +def solve_ode_deep_neural_network(x, num_neurons, num_iter, lmb):
    +    # num_hidden_neurons is now a list of number of neurons within each hidden layer
    +
    +    # Find the number of hidden layers:
    +    N_hidden = np.size(num_neurons)
    +    
    +    ## Set up initial weigths and biases 
    +    
    +    # Initialize the list of parameters:
    +    P = [None]*(N_hidden + 1) # + 1 to include the output layer
    +
    +    P[0] = npr.randn(num_neurons[0], 2 ) 
    +    for l in range(1,N_hidden):
    +        P[l] = npr.randn(num_neurons[l], num_neurons[l-1] + 1) # +1 to include bias 
    +    
    +    # For the output layer
    +    P[-1] = npr.randn(1, num_neurons[-1] + 1 ) # +1 since bias is included
    +
    +    print('Initial cost: %g'%cost_function_deep(P, x))
    +    
    +    ## Start finding the optimal weigths using gradient descent
    +    
    +    # Find the Python function that represents the gradient of the cost function
    +    # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer
    +    cost_function_deep_grad = grad(cost_function_deep,0)
    +    
    +    # Let the update be done num_iter times
    +    for i in range(num_iter):
    +        # Evaluate the gradient at the current weights and biases in P. 
    +        # The cost_grad consist now of N_hidden + 1 arrays; the gradient w.r.t the weights and biases
    +        # in the hidden layers and output layers evaluated at x.
    +        cost_deep_grad =  cost_function_deep_grad(P, x)
    +        
    +        for l in range(N_hidden+1):
    +            P[l] = P[l] - lmb * cost_deep_grad[l]
    +
    +    print('Final cost: %g'%cost_function_deep(P, x))
    +    
    +    return P
    +
    +

    +









    + +

    Solving the ODE

    + +

    +Finally, having set up the networks we are ready to use them to solve the ODE problem. +We add the analytical solution + +

    + + +

    def g_analytic(x, gamma = 2, g0 = 10):
    +    return g0*np.exp(-gamma*x)
    +
    +

    +









    + +

    Using neural network

    + +

    +The code below solves the ODE using a neural network. The number of +values for the input \( \vec x \) is 10, number of hidden neurons in the +hidden layer being 10 and th step size used in gradien descent +\( \lambda = 0.001 \). The program updates the weights and biases in the +network num_iter times. Finally, it plots the results from using the +neural network along with the analytical solution. + +

    + + +

    npr.seed(15)
    +
    +## Decide the vales of arguments to the function to solve
    +N = 10
    +x = np.linspace(0, 1, N)
    +
    +## Set up the initial parameters
    +num_hidden_neurons = 10
    +num_iter = 10000
    +lmb = 0.001
    +
    +P = solve_ode_neural_network(x, num_hidden_neurons, num_iter, lmb)
    +
    +res = g_trial(x,P) 
    +res_analytical = g_analytic(x)
    +
    +print('Max absolute difference: %g'%np.max(np.abs(res - res_analytical)))
    +
    +plt.figure(figsize=(10,10))
    +
    +plt.title('Performance of neural network solving an ODE compared to the analytical solution')
    +plt.plot(x, res_analytical)
    +plt.plot(x, res[0,:])
    +plt.legend(['analytical','nn'])
    +plt.xlabel('x')
    +plt.ylabel('g(x)')
    +plt.show()
    +
    +

    + + +

    Using a deep neural network

    + +

    + + +

    npr.seed(15)
    +
    +## Decide the vales of arguments to the function to solve
    +N = 10
    +x = np.linspace(0, 1, N)
    +
    +## Set up the initial parameters
    +num_hidden_neurons = np.array([10,10])
    +num_iter = 10000
    +lmb = 0.001
    +
    +P = solve_ode_deep_neural_network(x, num_hidden_neurons, num_iter, lmb)
    +
    +res = g_trial_deep(x,P) 
    +res_analytical = g_analytic(x)
    +
    +plt.figure(figsize=(10,10))
    +
    +plt.title('Performance of a deep neural network solving an ODE compared to the analytical solution')
    +plt.plot(x, res_analytical)
    +plt.plot(x, res[0,:])
    +plt.legend(['analytical','dnn'])
    +plt.ylabel('g(x)')
    +plt.show()
    +
    +

    +









    + +

    Wrapping it up

    + +

    +By rewriting the ODE as a minimization problem, it was possible to +solve equation using either a neural network (one hidden layer) or a +deep neural network (more than one hidden layers). How well the +network performed is measured by a specified cost function, which is +the function the network tries to minimize. Using a trial solution +which satisfies the additional condition and being defined by using +the output from the network in some way, the minimization problem +could be explicitly defined for out network to solve. The proposed +solution from the network is then the trial solution with parameters, +that is weights and biases within each layer in the network, such that +the solution minimizes the cost function. diff --git a/doc/pub/NeuralNet/html/NeuralNet.html b/doc/pub/NeuralNet/html/NeuralNet.html index afffc73d6..680938c01 100644 --- a/doc/pub/NeuralNet/html/NeuralNet.html +++ b/doc/pub/NeuralNet/html/NeuralNet.html @@ -199,7 +199,35 @@ div { text-align: justify; text-justify: inter-word; } ('Running with Keras', 2, None, '___sec83'), ('Final part', 2, None, '___sec84'), ('Final visualization', 2, None, '___sec85'), - ('Fun links', 2, None, '___sec86')]} + ('Fun links', 2, None, '___sec86'), + ('Applications: solving ordinary differential equations with ' + 'Neural Networks', + 2, + None, + '___sec87'), + ('Trial solution', 2, None, '___sec88'), + ('More details', 2, None, '___sec89'), + ('Reformulating the problem', 2, None, '___sec90'), + ('Estimating errors', 2, None, '___sec91'), + ('Creating a simple Deep Neural Net', 2, None, '___sec92'), + ('Feedforward', 2, None, '___sec93'), + ('Result after weighting', 2, None, '___sec94'), + ('Output', 2, None, '___sec95'), + ('Setting up the code, feed forward part', 2, None, '___sec96'), + ('Backpropagation', 2, None, '___sec97'), + ('Gradient Descent', 2, None, '___sec98'), + ('More on GD and cost function', 2, None, '___sec99'), + ('An implementation of a Deep Neural Network', + 2, + None, + '___sec100'), + ('Feed forward again', 2, None, '___sec101'), + ('The final parts of the code', 2, None, '___sec102'), + ('And adding Back propagation', 2, None, '___sec103'), + ('Solving the ODE', 2, None, '___sec104'), + ('Using neural network', 2, None, '___sec105'), + ('Using a deep neural network', 2, None, '___sec106'), + ('Wrapping it up', 2, None, '___sec107')]} end of tocinfo --> @@ -3632,6 +3660,824 @@ plt.show()

  • Abstract art using convolutional neural networks
  • +









    + +

    Applications: solving ordinary differential equations with Neural Networks

    + +

    +We end our discussion on neural networks with a discussion on how to solve differential equations. Here we focus +first on the classical exponential decay in one dimension. Thereafter we switch to the Poisson equation in one dimension. + +

    +The aim is to see if we can use a neural network to solve + +$$ +\begin{equation} +\label{eq:ode} +g'(x) = -\gamma g(x) +\end{equation} +$$ + +

    +where \( g(0) = g_0 \) with \( \gamma \) and \( g_0 \) being some chosen +values. This equation is an ordinary differential equation since the +function we have to solve for, \( g(x) \), is of one variable. + +

    +Here we set \( \gamma = 2 \) and \( g_0 = 10 \) but feel free to change +them and see how the neural network performs. + +

    +









    + +

    Trial solution

    + +

    +To begin with, a trial solution \( g_t(t) \) must be chosen. A general +trial solution for ordinary differential equations could be + +$$ +g_t(x, P) = h_1(x) + h_2(x, N(x, P)), +$$ + +

    +with \( h_1(x) \) ensuring that \( g_t(x) \) satisfies some conditions and +\( h_2(x,N(x, P)) \) an expression involving \( x \) and the output from the +neural network \( N(x,P) \) with \( P \) being the collection of the weights +and biases for each layer. + +

    +It is assumed that there are no weights and +bias at the input layer, so \( P = \{ P_{\text{hidden}}, +P_{\text{output}} \} \). If there are \( N_{\text{hidden} } \) neurons in +the hidden layer, then \( P_{\text{hidden}} \) is an \( N_{\text{hidden} } +\times 2 \) matrix. + +

    +The first column in \( P_{\text{hidden} } \) represents +the bias for each neuron in the hidden layer and the second column +represents the weigths for each neuron. If there are \( N_{\text{output} +} \) neurons in the output layer, then \( P_{\text{output}} \) is a +\( N_{\text{output} } \times (1 + N_{\text{hidden} }) \) matrix. Its first +column represents the bias of each neuron and the remaining columns +represents the weights to each neuron. + +

    +









    + +

    More details

    + +

    +We have \( g(0) = g_0 \). The trial solution must fulfill this +condition to be a proper solution of \eqref{eq:ode}. + +

    +A possible way to +ensure that \( g_t(0, P) = g_0 \), is to let \( F(N(x,P)) = x\cdot N(x,P) \) +and \( A(x) = g_0 \). This gives the following trial solution: + +$$ +\begin{equation} +g_t(x, P) = g_0 + x \cdot N(x, P). +\label{_auto11} +\end{equation} +$$ + +

    +









    + +

    Reformulating the problem

    + +

    +Often, the role of a neural network is to minimize its parameters with +respect to some given error criteria. This criteria, the cost or loss +function, is a measure of how much error the output of the network has +compared to some given known answers. A reformulation of +\eqref{eq:ode} must therefore be done, such that it describes the +problem a neural network can solve. + +

    +The neural network must find the set of weigths and biases \( P \) such +that the trial solution in satisfies +\eqref{eq:ode}. The trial solution has been chosen such that it +already solves the condition \( g(0) = g_0 \). What remains, is to find +\( P \) such that + +$$ +\begin{equation} +g_t'(x, P) = - \gamma g_t(x, P) +\label{_auto12} +\end{equation} +$$ + +

    +is fulfilled as best as possible. + +

    +









    + +

    Estimating errors

    + +

    +Having two sides of an equation as equal as +possible, means that the absolute or squared difference between the +sides must be as close to zero as small. In this case, the difference +squared is an appropiate measurement of how errorneous the trial +solution is with respect to \( P \) of the neural network. Therefore, the +problem our network must solve, is + +$$ +\min_{P}\Big\{ \big(g_t'(x, P) - ( -\gamma g_t(x, P) \big)^2 \Big\} +$$ + +

    +or, in terms of weights and biases for each layer: + +$$ +\min_{P_{\text{hidden} }, \ P_{\text{output} }}\Big\{ \big(g_t'(x, \{ P_{\text{hidden} }, P_{\text{output} }\}) - ( -\gamma g_t(x, \{ P_{\text{hidden} }, P_{\text{output} }\}) \big)^2 \Big\} +$$ + +

    +for an input value \( x \). +If the neural network evaluates \( g_t(x, P) \) at more avalues for \( x \), say \( N \) values \( x_i \) for \( i = 1, \dots, N \), then the total error to minimize is + +$$ +\begin{equation} +\label{eq:min} +\min_{P}\Big\{\sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) \big)^2 \Big\} +\end{equation} +$$ + +

    +Letting \( c(x, P) = \sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) +\big)^2 \) denote the cost function, the minimization problem of which +our network must solve, is + +$$ +\min_{P} c(x, P) +$$ + +

    +or in terms of \( P_{\text{hidden} } \) and \( P_{\text{output} } \) + +$$ +\min_{P_{\text{hidden} }, \ P_{\text{output} }} c(x, \{P_{\text{hidden} }, P_{\text{output} }\}) +$$ + +

    +









    + +

    Creating a simple Deep Neural Net

    + +

    +The next step is to decide how the neural net \( N(x, P) \) +should be. In this case, the neural network is made +from scratch to understand better how a neural network works, gain +more control over its architecture, and see how Autograd can be used +to simplify the implementation. + +

    +Since a deep neural network (DNN) is a neural network with more than +one hidden layer, we can first look on how to implement a neural +network. Having an implementation of a neural network at hand, an +extension of it into a deep neural network would (hopefully) be +painless. + +

    +For simplicity, we assume that the input is an array \( \vec x = +(x_1, \dots, x_N) \) with \( N \) elements. It is at these points the neural +network should find \( P \) such that it fulfills \eqref{eq:min}. + +

    +









    + +

    Feedforward

    + +

    +First, a feedforward of the inputs must be done. This means that \( \vec + x \) must be passed through an input layer, a hidden layer and a output + layer. The input layer in this case, does not need to process the + data any further. The input layer will consist of \( N_{\text{input} } \) + neurons, passing its element to each neuron in the hidden layer. The + number of neurons in the hidden layer will be \( N_{\text{hidden} } \). + +

    +For the \( i \)-th in the hidden layer with weight \( w_i^{\text{hidden} } \) +and bias \( b_i^{\text{hidden} } \), the weighting from the \( j \)-th neuron +at the input layer is: + +$$ +\begin{aligned} +z_{i,j}^{\text{hidden}} &= b_i^{\text{hidden}} + w_i^{\text{hidden}}x_j \\ +&= +\begin{pmatrix} +b_i^{\text{hidden}} & w_i^{\text{hidden}} +\end{pmatrix} +\begin{pmatrix} +1 \\ +x_j +\end{pmatrix} +\end{aligned} +$$ + +

    + + +

    Result after weighting

    + +

    +The result after weighting the input at the \( i \)-th hidden neuron can be written as a vector: +$$ +\begin{aligned} +\vec{z}_{i}^{\text{hidden}} &= \Big( b_i^{\text{hidden}} + w_i^{\text{hidden}}x_1 , \ b_i^{\text{hidden}} + w_i^{\text{hidden}} x_2, \ \dots \, , \ b_i^{\text{hidden}} + w_i^{\text{hidden}} x_N\Big) \\ +&= +\begin{pmatrix} + b_i^{\text{hidden}} & w_i^{\text{hidden}} +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +x_1 & x_2 & \dots & x_N +\end{pmatrix} \\ +&= \vec{p}_{i, \text{hidden}}^T X +\end{aligned} +$$ + +

    +It is the vector \( \vec{p}_{i, \text{hidden}}^T \) that defines each row +in \( P_{\text{hidden} } \), which contains the weights for the neural +network to minimize according to \eqref{eq:min}. + +

    +After having found \( \vec{z}_{i}^{\text{hidden}} \) for every neuron \( i \) +in the hidden layer, the vector will be sent to an activation function +\( a_i(\vec{z}) \). In this example, the sigmoid function has been used: + +$$ +f(z) = \frac{1}{1 + \exp{(-z)}}. +$$ + +

    +









    + +

    Output

    + +

    +The output $\vec{x}_i^{\text{hidden} }$from each \( i \)-th hidden neuron is: + +$$ +\vec{x}_i^{\text{hidden} } = f\big( \vec{z}_{i}^{\text{hidden}} \big). +$$ + +

    +The outputs \( \vec{x}_i^{\text{hidden} } \) are then sent to the output layer. + +

    +The output layer consist of one neuron in this case, and combines the +output from each of the neurons in the hidden layers. The output layer +combines the results from the hidden layer using some weights \( +w_i^{\text{output}} \) and biases \( b_i^{\text{output}} \). In this case, +it is assumes that the number of neurons in the output layer is one. + +

    +The procedure of weigthing the output neuron \( j \) in the hidden layer +to the \( i \)-th neuron in the output layer is similar as for the hidden +layer described previously. + +$$ +\begin{aligned} +z_{1,j}^{\text{output}} & = +\begin{pmatrix} +b_1^{\text{output}} & \vec{w}_1^{\text{output}} +\end{pmatrix} +\begin{pmatrix} +1 \\ +\vec{x}_j^{\text{hidden}} +\end{pmatrix} +\end{aligned} +$$ + +

    +Expressing \( z_{1,j}^{\text{output}} \) as a vector gives the following procedure of weighting the inputs from the hidden layer: + +$$ +\vec{z}_{1}^{\text{output}} = +\begin{pmatrix} +b_1^{\text{output}} & \vec{w}_1^{\text{output}} +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +\vec{x}_1^{\text{hidden}} & \vec{x}_2^{\text{hidden}} & \dots & \vec{x}_N^{\text{hidden}} +\end{pmatrix} +$$ + +

    +In this case we seek a continous range of values since we are +approximating a function. This means that after computing +\( \vec{z}_{1}^{\text{output}} \) the neural network has finished its +feedforward step, and \( \vec{z}_{1}^{\text{output}} \) is the final +output of the network. + +

    +









    + +

    Setting up the code, feed forward part

    +

    + + +

    # Note that we use the  numpy wrapper for Autograd (see the gradient descent  slides)
    +import autograd.numpy as np
    +from autograd import grad, elementwise_grad
    +import autograd.numpy.random as npr
    +from matplotlib import pyplot as plt
    +
    +def sigmoid(z):
    +    return 1/(1 + np.exp(-z))
    +
    +def neural_network(params, x):
    +    
    +    # Find the weights (including and biases) for the hidden and output layer.
    +    # Assume that params is a list of parameters for each layer. 
    +    # The biases are the first element for each array in params, 
    +    # and the weights are the remaning elements in each array in params.   
    +    
    +    w_hidden = params[0]
    +    w_output = params[1]
    +
    +    # Assumes input x being an one-dimensional array
    +    num_values = np.size(x)
    +    x = x.reshape(-1, num_values)
    +    
    +    # Assume that the input layer does nothing to the input x
    +    x_input = x
    +
    +    ## Hidden layer:
    +    
    +    # Add a row of ones to include bias
    +    x_input = np.concatenate((np.ones((1,num_values)), x_input ), axis = 0)
    +    
    +    z_hidden = np.matmul(w_hidden, x_input)
    +    x_hidden = sigmoid(z_hidden)
    +
    +    ## Output layer:
    +    
    +    # Include bias:
    +    x_hidden = np.concatenate((np.ones((1,num_values)), x_hidden ), axis = 0)
    +
    +    z_output = np.matmul(w_output, x_hidden)
    +    x_output = z_output
    +
    +    return x_output
    +
    +

    +









    + +

    Backpropagation

    + +

    +Now that feedforward can be done, the next step is to decide how the +parameters should change such that they minimize the cost function. + +

    +Recall that the chosen cost function for this problem is + +$$ +c(x, P) = \sum_i \big(g_t'(x_i, P) - ( -\gamma g_t(x_i, P) \big)^2 +$$ + +

    +In order to minimize it, an optimalization method must be chosen. + +

    +Here, gradient descent with a constant step size has been chosen. + +

    +Before looking at the gradient descent method, let us set up the cost +function along with the right ride of the ODE and trial solution. + +

    + + +

    # The trial solution using the deep neural network:
    +def g_trial(x,params, g0 = 10):
    +    return g0 + x*neural_network(params,x)
    +
    +# The right side of the ODE:
    +def g(x, g_trial, gamma = 2):
    +    return -gamma*g_trial
    +
    +# The cost function:
    +def cost_function(P, x):
    +    
    +    # Evaluate the trial function with the current parameters P
    +    g_t = g_trial(x,P)
    +    
    +    # Find the derivative w.r.t x of the neural network
    +    d_net_out = elementwise_grad(neural_network,1)(P,x) 
    +    
    +    # Find the derivative w.r.t x of the trial function
    +    d_g_t = elementwise_grad(g_trial,0)(x,P)  
    +    
    +    # The right side of the ODE 
    +    func = g(x, g_t)
    +
    +    err_sqr = (d_g_t - func)**2
    +    cost_sum = np.sum(err_sqr)
    +    
    +    return cost_sum
    +
    +

    +









    + +

    Gradient Descent

    + +

    +The idea of the gradient descent algorithm is to update parameters in +direction where the cost function decreases goes to a minimum. + +

    +In general, the update of some parameters \( \vec \omega \) given a cost +function defined by some weights \( \vec \omega \), \( c(x, \vec \omega) \), +goes as follows: + +$$ +\vec \omega_{\text{new} } = \vec \omega - \lambda \nabla_{\vec \omega} c(x, \vec \omega), +$$ + +

    +for a number of iterations or until $ \big|\big| \vec +\omega_{\text{new} } - \vec \omega \big|\big|$ is smaller than some +given tolerance. + +

    +The value of \( \lambda \) decides how large steps the algorithm must take +in the direction of $ \nabla_{\vec \omega} c(x, \vec \omega)$. The +notatation \( \nabla_{\vec \omega} \) denotes the gradient with respect to +the elements in \( \vec \omega \). + +

    +









    + +

    More on GD and cost function

    + +

    +In our case, we have to minimize the cost function \( c(x, P) \) with +respect to the two sets of weights and bisases, that is for the hidden +layer \( P_{\text{hidden} } \) and for the ouput layer \( P_{\text{output} +} \) . + +

    +This means that \( P_{\text{hidden} } \) and \( P_{\text{output} } \) is +updated by + +$$ +\begin{aligned} +P_{\text{hidden},\text{new}} &= P_{\text{hidden}} - \lambda \nabla_{P_{\text{hidden}}} c(x, P) \\ +P_{\text{output},\text{new}} &= P_{\text{output}} - \lambda \nabla_{P_{\text{output}}} c(x, P) +\end{aligned} +$$ + +

    +This might look like a cumberstone to set up the correct expression +for finding the gradients. Luckily, Autograd comes to the rescue. + +

    + + +

    def solve_ode_neural_network(x, num_neurons_hidden, num_iter, lmb):
    +    ## Set up initial weigths and biases 
    +    
    +    # For the hidden layer
    +    p0 = npr.randn(num_neurons_hidden, 2 ) 
    +
    +    # For the output layer
    +    p1 = npr.randn(1, num_neurons_hidden + 1 ) # +1 since bias is included
    +
    +    P = [p0, p1]
    +
    +    print('Initial cost: %g'%cost_function(P, x))
    +    
    +    ## Start finding the optimal weigths using gradient descent
    +    
    +    # Find the Python function that represents the gradient of the cost function
    +    # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer
    +    cost_function_grad = grad(cost_function,0)
    +    
    +    # Let the update be done num_iter times
    +    for i in range(num_iter):
    +        # Evaluate the gradient at the current weights and biases in P. 
    +        # The cost_grad consist now of two arrays; 
    +        # one for the gradient w.r.t P_hidden and 
    +        # one for the gradient w.r.t P_output
    +        cost_grad =  cost_function_grad(P, x)
    +    
    +        P[0] = P[0] - lmb * cost_grad[0]
    +        P[1] = P[1] - lmb * cost_grad[1]
    +
    +    print('Final cost: %g'%cost_function(P, x))
    +    
    +    return P
    +
    +

    +









    + +

    An implementation of a Deep Neural Network

    + +

    +As previously stated, a Deep Neural Network (DNN) follows the same +concept of a neural network, but having more than one hidden +layer. Suppose that the network has \( N_{\text{hidden}} \) hidden layers +where the \( l \)-th layer has \( N_{\text{hidden}}^{(l)} \) neurons. The +input is still assumed to be an array of size \( 1 \times N \). The +network must now try to optimalize its output with respect to the +collection of weigths and biases \( P = \big\{P_{\text{input} }, \ +P_{\text{hidden} }^{(1)}, \ P_{\text{hidden} }^{(2)}, \ \dots , \ +P_{\text{hidden} }^{(N_{\text{hidden}})}, \ P_{\text{output} }\big\} \). + +

    +









    + +

    Feed forward again

    + +

    +The feedforward step is similar to as for the neural netowork, but now considering more than one hidden layer. + +

    +The \( i \)-th neuron at layer \( l \) recieves the result +\( \vec{x}_j^{(l-1),\text{hidden} } \) from the \( j \)-th neuron at layer +\( l-1 \). The \( i \)-th neuron at layer \( l \) weights all of the elements in +\( \vec{x}_j^{(l-1),\text{hidden} } \) with a weight vector \( \vec +w_{i,j}^{(l), \ \text{hidden} } \) with as many weigths as there are +elements in$\vec{x}_j^{(l-1),\text{hidden} }$, and adds a bias +\( b_i^{(l), \ \text{hidden} } \): + +$$ +\begin{aligned} +z_{i,j}^{(l),\ \text{hidden}} &= b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_j^{(l-1),\text{hidden} } \\ +&= +\begin{pmatrix} +b_i^{(l), \ \text{hidden}} & \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T +\end{pmatrix} +\begin{pmatrix} +1 \\ +\vec{x}_j^{(l-1),\text{hidden} } +\end{pmatrix} +\end{aligned} +$$ + +

    +The output from the \( i \)-th neuron at the hidden layer \( l \) becomes a vector \( \vec{z}_{i}^{(l),\ \text{hidden}} \): + +$$ +\begin{aligned} +\vec{z}_{i}^{(l),\ \text{hidden}} &= \Big( b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_1^{(l-1),\text{hidden} }, \ \dots \ , \ b_i^{(l), \ \text{hidden}} + \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T\vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\text{hidden} } \Big) \\ +&= +\begin{pmatrix} +b_i^{(l), \ \text{hidden}} & \big(\vec{w}_{i}^{(l), \ \text{hidden}}\big)^T +\end{pmatrix} +\begin{pmatrix} +1 & 1 & \dots & 1 \\ +\vec{x}_{1}^{(l-1),\text{hidden} } & \vec{x}_{2}^{(l-1),\text{hidden} } & \dots & \vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\text{hidden} } +\end{pmatrix} +\end{aligned} +$$ + +

    +









    + +

    The final parts of the code

    +

    + + +

    def deep_neural_network(deep_params, x):
    +    # N_hidden is the number of hidden layers  
    +    N_hidden = np.size(deep_params) - 1 # -1 since params consist of parameters to all the hidden layers AND the output layer
    +        
    +    # Assumes input x being an one-dimensional array
    +    num_values = np.size(x)
    +    x = x.reshape(-1, num_values)
    +    
    +    # Assume that the input layer does nothing to the input x
    +    x_input = x
    +    
    +    # Due to multiple hidden layers, define a variable referencing to the
    +    # output of the previous layer:
    +    x_prev = x_input 
    +    
    +    ## Hidden layers:
    +    
    +    for l in range(N_hidden):
    +        # From the list of parameters P; find the correct weigths and bias for this layer
    +        w_hidden = deep_params[l]
    +        
    +        # Add a row of ones to include bias
    +        x_prev = np.concatenate((np.ones((1,num_values)), x_prev ), axis = 0)
    +
    +        z_hidden = np.matmul(w_hidden, x_prev)
    +        x_hidden = sigmoid(z_hidden)
    +
    +        # Update x_prev such that next layer can use the output from this layer
    +        x_prev = x_hidden 
    +
    +    ## Output layer:
    +    
    +    # Get the weights and bias for this layer
    +    w_output = deep_params[-1]
    +    
    +    # Include bias:
    +    x_prev = np.concatenate((np.ones((1,num_values)), x_prev), axis = 0)
    +
    +    z_output = np.matmul(w_output, x_prev)
    +    x_output = z_output
    +
    +    return x_output
    +
    +

    +









    + +

    And adding Back propagation

    + +

    +This step is very similar for the neural network. The idea in this +step is the same as for the neural network, but with more parameters +to update for. Again there is no need for computing the gradients +analytically since Autograd does the work for us. + +

    + + +

    # The trial solution using the deep neural network:
    +def g_trial_deep(x,params, g0 = 10):
    +    return g0 + x*deep_neural_network(params,x)
    +
    +# The same cost function as for the neural network, but calls deep_neural_network instead.
    +def cost_function_deep(P, x):
    +    
    +    # Evaluate the trial function with the current parameters P
    +    g_t = g_trial_deep(x,P)
    +    
    +    # Find the derivative w.r.t x of the neural network
    +    d_net_out = elementwise_grad(deep_neural_network,1)(P,x) 
    +    
    +    # Find the derivative w.r.t x of the trial function
    +    d_g_t = elementwise_grad(g_trial_deep,0)(x,P)  
    +    
    +    # The right side of the ODE 
    +    func = g(x, g_t)
    +
    +    err_sqr = (d_g_t - func)**2
    +    cost_sum = np.sum(err_sqr)
    +    
    +    return cost_sum
    +
    +def solve_ode_deep_neural_network(x, num_neurons, num_iter, lmb):
    +    # num_hidden_neurons is now a list of number of neurons within each hidden layer
    +
    +    # Find the number of hidden layers:
    +    N_hidden = np.size(num_neurons)
    +    
    +    ## Set up initial weigths and biases 
    +    
    +    # Initialize the list of parameters:
    +    P = [None]*(N_hidden + 1) # + 1 to include the output layer
    +
    +    P[0] = npr.randn(num_neurons[0], 2 ) 
    +    for l in range(1,N_hidden):
    +        P[l] = npr.randn(num_neurons[l], num_neurons[l-1] + 1) # +1 to include bias 
    +    
    +    # For the output layer
    +    P[-1] = npr.randn(1, num_neurons[-1] + 1 ) # +1 since bias is included
    +
    +    print('Initial cost: %g'%cost_function_deep(P, x))
    +    
    +    ## Start finding the optimal weigths using gradient descent
    +    
    +    # Find the Python function that represents the gradient of the cost function
    +    # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer
    +    cost_function_deep_grad = grad(cost_function_deep,0)
    +    
    +    # Let the update be done num_iter times
    +    for i in range(num_iter):
    +        # Evaluate the gradient at the current weights and biases in P. 
    +        # The cost_grad consist now of N_hidden + 1 arrays; the gradient w.r.t the weights and biases
    +        # in the hidden layers and output layers evaluated at x.
    +        cost_deep_grad =  cost_function_deep_grad(P, x)
    +        
    +        for l in range(N_hidden+1):
    +            P[l] = P[l] - lmb * cost_deep_grad[l]
    +
    +    print('Final cost: %g'%cost_function_deep(P, x))
    +    
    +    return P
    +
    +

    +









    + +

    Solving the ODE

    + +

    +Finally, having set up the networks we are ready to use them to solve the ODE problem. +We add the analytical solution + +

    + + +

    def g_analytic(x, gamma = 2, g0 = 10):
    +    return g0*np.exp(-gamma*x)
    +
    +

    +









    + +

    Using neural network

    + +

    +The code below solves the ODE using a neural network. The number of +values for the input \( \vec x \) is 10, number of hidden neurons in the +hidden layer being 10 and th step size used in gradien descent +\( \lambda = 0.001 \). The program updates the weights and biases in the +network num_iter times. Finally, it plots the results from using the +neural network along with the analytical solution. + +

    + + +

    npr.seed(15)
    +
    +## Decide the vales of arguments to the function to solve
    +N = 10
    +x = np.linspace(0, 1, N)
    +
    +## Set up the initial parameters
    +num_hidden_neurons = 10
    +num_iter = 10000
    +lmb = 0.001
    +
    +P = solve_ode_neural_network(x, num_hidden_neurons, num_iter, lmb)
    +
    +res = g_trial(x,P) 
    +res_analytical = g_analytic(x)
    +
    +print('Max absolute difference: %g'%np.max(np.abs(res - res_analytical)))
    +
    +plt.figure(figsize=(10,10))
    +
    +plt.title('Performance of neural network solving an ODE compared to the analytical solution')
    +plt.plot(x, res_analytical)
    +plt.plot(x, res[0,:])
    +plt.legend(['analytical','nn'])
    +plt.xlabel('x')
    +plt.ylabel('g(x)')
    +plt.show()
    +
    +

    + + +

    Using a deep neural network

    + +

    + + +

    npr.seed(15)
    +
    +## Decide the vales of arguments to the function to solve
    +N = 10
    +x = np.linspace(0, 1, N)
    +
    +## Set up the initial parameters
    +num_hidden_neurons = np.array([10,10])
    +num_iter = 10000
    +lmb = 0.001
    +
    +P = solve_ode_deep_neural_network(x, num_hidden_neurons, num_iter, lmb)
    +
    +res = g_trial_deep(x,P) 
    +res_analytical = g_analytic(x)
    +
    +plt.figure(figsize=(10,10))
    +
    +plt.title('Performance of a deep neural network solving an ODE compared to the analytical solution')
    +plt.plot(x, res_analytical)
    +plt.plot(x, res[0,:])
    +plt.legend(['analytical','dnn'])
    +plt.ylabel('g(x)')
    +plt.show()
    +
    +

    +









    + +

    Wrapping it up

    + +

    +By rewriting the ODE as a minimization problem, it was possible to +solve equation using either a neural network (one hidden layer) or a +deep neural network (more than one hidden layers). How well the +network performed is measured by a specified cost function, which is +the function the network tries to minimize. Using a trial solution +which satisfies the additional condition and being defined by using +the output from the network in some way, the minimization problem +could be explicitly defined for out network to solve. The proposed +solution from the network is then the trial solution with parameters, +that is weights and biases within each layer in the network, such that +the solution minimizes the cost function. diff --git a/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb b/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb index 011e92f5f..61d8d5658 100644 --- a/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb +++ b/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb @@ -4010,7 +4010,994 @@ "\n", "1. [Self-Driving cars using a convolutional neural network](https://arxiv.org/abs/1604.07316)\n", "\n", - "2. [Abstract art using convolutional neural networks](https://deepdreamgenerator.com/)" + "2. [Abstract art using convolutional neural networks](https://deepdreamgenerator.com/)\n", + "\n", + "## Applications: solving ordinary differential equations with Neural Networks\n", + "\n", + "We end our discussion on neural networks with a discussion on how to solve differential equations. Here we focus \n", + "first on the classical exponential decay in one dimension. Thereafter we switch to the Poisson equation in one dimension.\n", + "\n", + "The aim is to see if we can use a neural network to solve" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "

    \n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\label{eq:ode} \\tag{16}\n", + "g'(x) = -\\gamma g(x) \n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $g(0) = g_0$ with $\\gamma$ and $g_0$ being some chosen\n", + "values. This equation is an ordinary differential equation since the\n", + "function we have to solve for, $g(x)$, is of one variable.\n", + "\n", + "Here we set $\\gamma = 2$ and $g_0 = 10$ but feel free to change\n", + "them and see how the neural network performs.\n", + "\n", + "## Trial solution\n", + "\n", + "To begin with, a trial solution $g_t(t)$ must be chosen. A general\n", + "trial solution for ordinary differential equations could be" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "g_t(x, P) = h_1(x) + h_2(x, N(x, P)),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with $h_1(x)$ ensuring that $g_t(x)$ satisfies some conditions and\n", + "$h_2(x,N(x, P))$ an expression involving $x$ and the output from the\n", + "neural network $N(x,P)$ with $P $ being the collection of the weights\n", + "and biases for each layer. \n", + "\n", + "It is assumed that there are no weights and\n", + "bias at the input layer, so $P = \\{ P_{\\text{hidden}},\n", + "P_{\\text{output}} \\}$. If there are $N_{\\text{hidden} }$ neurons in\n", + "the hidden layer, then $P_{\\text{hidden}}$ is an $N_{\\text{hidden} }\n", + "\\times 2$ matrix. \n", + "\n", + "The first column in $P_{\\text{hidden} }$ represents\n", + "the bias for each neuron in the hidden layer and the second column\n", + "represents the weigths for each neuron. If there are $N_{\\text{output}\n", + "}$ neurons in the output layer, then $P_{\\text{output}} $ is a\n", + "$N_{\\text{output} } \\times (1 + N_{\\text{hidden} })$ matrix. Its first\n", + "column represents the bias of each neuron and the remaining columns\n", + "represents the weights to each neuron.\n", + "\n", + "\n", + "## More details\n", + "\n", + "We have $g(0) = g_0$. The trial solution must fulfill this\n", + "condition to be a proper solution of ([eq:ode](#eq:ode)). \n", + "\n", + "A possible way to\n", + "ensure that $g_t(0, P) = g_0$, is to let $F(N(x,P)) = x\\cdot N(x,P)$\n", + "and $A(x) = g_0$. This gives the following trial solution:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "\n", + "$$\n", + "\\begin{equation}\n", + "g_t(x, P) = g_0 + x \\cdot N(x, P).\n", + "\\label{_auto11} \\tag{17}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Reformulating the problem\n", + "\n", + "Often, the role of a neural network is to minimize its parameters with\n", + "respect to some given error criteria. This criteria, the cost or loss\n", + "function, is a measure of how much error the output of the network has\n", + "compared to some given known answers. A reformulation of\n", + "([eq:ode](#eq:ode)) must therefore be done, such that it describes the\n", + "problem a neural network can solve.\n", + "\n", + "The neural network must find the set of weigths and biases $P$ such\n", + "that the trial solution in satisfies\n", + "([eq:ode](#eq:ode)). The trial solution has been chosen such that it\n", + "already solves the condition $g(0) = g_0$. What remains, is to find\n", + "$P$ such that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "\n", + "$$\n", + "\\begin{equation}\n", + "g_t'(x, P) = - \\gamma g_t(x, P) \n", + "\\label{_auto12} \\tag{18}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "is fulfilled as *best as possible*. \n", + "\n", + "\n", + "## Estimating errors\n", + "\n", + "Having two sides of an equation as equal as\n", + "possible, means that the absolute or squared difference between the\n", + "sides must be as close to zero as small. In this case, the difference\n", + "squared is an appropiate measurement of how errorneous the trial\n", + "solution is with respect to $P$ of the neural network. Therefore, the\n", + "problem our network must solve, is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\min_{P}\\Big\\{ \\big(g_t'(x, P) - ( -\\gamma g_t(x, P) \\big)^2 \\Big\\}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or, in terms of weights and biases for each layer:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\min_{P_{\\text{hidden} }, \\ P_{\\text{output} }}\\Big\\{ \\big(g_t'(x, \\{ P_{\\text{hidden} }, P_{\\text{output} }\\}) - ( -\\gamma g_t(x, \\{ P_{\\text{hidden} }, P_{\\text{output} }\\}) \\big)^2 \\Big\\}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "for an input value $x$. \n", + "If the neural network evaluates $g_t(x, P)$ at more avalues for $x$, say $N$ values $x_i$ for $i = 1, \\dots, N$, then the *total* error to minimize is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\label{eq:min} \\tag{19}\n", + "\\min_{P}\\Big\\{\\sum_i \\big(g_t'(x_i, P) - ( -\\gamma g_t(x_i, P) \\big)^2 \\Big\\} \n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Letting $c(x, P) = \\sum_i \\big(g_t'(x_i, P) - ( -\\gamma g_t(x_i, P)\n", + "\\big)^2$ denote the cost function, the minimization problem of which\n", + "our network must solve, is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\min_{P} c(x, P)\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or in terms of $P_{\\text{hidden} }$ and $P_{\\text{output} }$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\min_{P_{\\text{hidden} }, \\ P_{\\text{output} }} c(x, \\{P_{\\text{hidden} }, P_{\\text{output} }\\})\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a simple Deep Neural Net\n", + "\n", + "The next step is to decide how the neural net $N(x, P)$ \n", + "should be. In this case, the neural network is made\n", + "from scratch to understand better how a neural network works, gain\n", + "more control over its architecture, and see how Autograd can be used\n", + "to simplify the implementation.\n", + "\n", + "\n", + "Since a deep neural network (DNN) is a neural network with more than\n", + "one hidden layer, we can first look on how to implement a neural\n", + "network. Having an implementation of a neural network at hand, an\n", + "extension of it into a deep neural network would (hopefully) be\n", + "painless.\n", + "\n", + "For simplicity, we assume that the input is an array $\\vec x =\n", + "(x_1, \\dots, x_N)$ with $N$ elements. It is at these points the neural\n", + "network should find $P$ such that it fulfills ([eq:min](#eq:min)).\n", + "\n", + "## Feedforward\n", + "\n", + "First, a feedforward of the inputs must be done. This means that $\\vec\n", + " x$ must be passed through an input layer, a hidden layer and a output\n", + " layer. The input layer in this case, does not need to process the\n", + " data any further. The input layer will consist of $N_{\\text{input} }$\n", + " neurons, passing its element to each neuron in the hidden layer. The\n", + " number of neurons in the hidden layer will be $N_{\\text{hidden} }$.\n", + "\n", + "For the $i$-th in the hidden layer with weight $w_i^{\\text{hidden} }$\n", + "and bias $b_i^{\\text{hidden} }$, the weighting from the $j$-th neuron\n", + "at the input layer is:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{aligned}\n", + "z_{i,j}^{\\text{hidden}} &= b_i^{\\text{hidden}} + w_i^{\\text{hidden}}x_j \\\\\n", + "&= \n", + "\\begin{pmatrix}\n", + "b_i^{\\text{hidden}} & w_i^{\\text{hidden}}\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 \\\\\n", + "x_j\n", + "\\end{pmatrix} \n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Result after weighting\n", + "\n", + "The result after weighting the input at the $i$-th hidden neuron can be written as a vector:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{aligned}\n", + "\\vec{z}_{i}^{\\text{hidden}} &= \\Big( b_i^{\\text{hidden}} + w_i^{\\text{hidden}}x_1 , \\ b_i^{\\text{hidden}} + w_i^{\\text{hidden}} x_2, \\ \\dots \\, , \\ b_i^{\\text{hidden}} + w_i^{\\text{hidden}} x_N\\Big) \\\\\n", + "&= \n", + "\\begin{pmatrix}\n", + " b_i^{\\text{hidden}} & w_i^{\\text{hidden}}\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 & 1 & \\dots & 1 \\\\\n", + "x_1 & x_2 & \\dots & x_N\n", + "\\end{pmatrix} \\\\\n", + "&= \\vec{p}_{i, \\text{hidden}}^T X\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is the vector $\\vec{p}_{i, \\text{hidden}}^T$ that defines each row\n", + "in $P_{\\text{hidden} }$, which contains the weights for the neural\n", + "network to minimize according to ([eq:min](#eq:min)).\n", + "\n", + "After having found $\\vec{z}_{i}^{\\text{hidden}} $ for every neuron $i$\n", + "in the hidden layer, the vector will be sent to an activation function\n", + "$a_i(\\vec{z})$. In this example, the sigmoid function has been used:\n", + "\n", + "$$\n", + "f(z) = \\frac{1}{1 + \\exp{(-z)}}.\n", + "$$\n", + "\n", + "\n", + "## Output\n", + "\n", + "The output $\\vec{x}_i^{\\text{hidden} }$from each $i$-th hidden neuron is:\n", + "\n", + "$$\n", + "\\vec{x}_i^{\\text{hidden} } = f\\big( \\vec{z}_{i}^{\\text{hidden}} \\big).\n", + "$$\n", + "\n", + "The outputs $\\vec{x}_i^{\\text{hidden} } $ are then sent to the output layer. \n", + "\n", + "The output layer consist of one neuron in this case, and combines the\n", + "output from each of the neurons in the hidden layers. The output layer\n", + "combines the results from the hidden layer using some weights $\n", + "w_i^{\\text{output}}$ and biases $b_i^{\\text{output}}$. In this case,\n", + "it is assumes that the number of neurons in the output layer is one.\n", + "\n", + "The procedure of weigthing the output neuron $j$ in the hidden layer\n", + "to the $i$-th neuron in the output layer is similar as for the hidden\n", + "layer described previously." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{aligned}\n", + "z_{1,j}^{\\text{output}} & = \n", + "\\begin{pmatrix}\n", + "b_1^{\\text{output}} & \\vec{w}_1^{\\text{output}}\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 \\\\\n", + "\\vec{x}_j^{\\text{hidden}}\n", + "\\end{pmatrix}\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Expressing $z_{1,j}^{\\text{output}}$ as a vector gives the following procedure of weighting the inputs from the hidden layer:\n", + "\n", + "$$\n", + "\\vec{z}_{1}^{\\text{output}} = \n", + "\\begin{pmatrix}\n", + "b_1^{\\text{output}} & \\vec{w}_1^{\\text{output}}\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 & 1 & \\dots & 1 \\\\\n", + "\\vec{x}_1^{\\text{hidden}} & \\vec{x}_2^{\\text{hidden}} & \\dots & \\vec{x}_N^{\\text{hidden}}\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "In this case we seek a continous range of values since we are\n", + "approximating a function. This means that after computing\n", + "$\\vec{z}_{1}^{\\text{output}}$ the neural network has finished its\n", + "feedforward step, and $\\vec{z}_{1}^{\\text{output}}$ is the final\n", + "output of the network.\n", + "\n", + "\n", + "## Setting up the code, feed forward part" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Note that we use the numpy wrapper for Autograd (see the gradient descent slides)\n", + "import autograd.numpy as np\n", + "from autograd import grad, elementwise_grad\n", + "import autograd.numpy.random as npr\n", + "from matplotlib import pyplot as plt\n", + "\n", + "def sigmoid(z):\n", + " return 1/(1 + np.exp(-z))\n", + "\n", + "def neural_network(params, x):\n", + " \n", + " # Find the weights (including and biases) for the hidden and output layer.\n", + " # Assume that params is a list of parameters for each layer. \n", + " # The biases are the first element for each array in params, \n", + " # and the weights are the remaning elements in each array in params. \n", + " \n", + " w_hidden = params[0]\n", + " w_output = params[1]\n", + "\n", + " # Assumes input x being an one-dimensional array\n", + " num_values = np.size(x)\n", + " x = x.reshape(-1, num_values)\n", + " \n", + " # Assume that the input layer does nothing to the input x\n", + " x_input = x\n", + "\n", + " ## Hidden layer:\n", + " \n", + " # Add a row of ones to include bias\n", + " x_input = np.concatenate((np.ones((1,num_values)), x_input ), axis = 0)\n", + " \n", + " z_hidden = np.matmul(w_hidden, x_input)\n", + " x_hidden = sigmoid(z_hidden)\n", + "\n", + " ## Output layer:\n", + " \n", + " # Include bias:\n", + " x_hidden = np.concatenate((np.ones((1,num_values)), x_hidden ), axis = 0)\n", + "\n", + " z_output = np.matmul(w_output, x_hidden)\n", + " x_output = z_output\n", + "\n", + " return x_output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Backpropagation\n", + "\n", + "Now that feedforward can be done, the next step is to decide how the\n", + "parameters should change such that they minimize the cost function.\n", + "\n", + "Recall that the chosen cost function for this problem is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "c(x, P) = \\sum_i \\big(g_t'(x_i, P) - ( -\\gamma g_t(x_i, P) \\big)^2\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In order to minimize it, an optimalization method must be chosen. \n", + "\n", + "Here, gradient descent with a constant step size has been chosen. \n", + "\n", + "Before looking at the gradient descent method, let us set up the cost\n", + "function along with the right ride of the ODE and trial solution." + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# The trial solution using the deep neural network:\n", + "def g_trial(x,params, g0 = 10):\n", + " return g0 + x*neural_network(params,x)\n", + "\n", + "# The right side of the ODE:\n", + "def g(x, g_trial, gamma = 2):\n", + " return -gamma*g_trial\n", + "\n", + "# The cost function:\n", + "def cost_function(P, x):\n", + " \n", + " # Evaluate the trial function with the current parameters P\n", + " g_t = g_trial(x,P)\n", + " \n", + " # Find the derivative w.r.t x of the neural network\n", + " d_net_out = elementwise_grad(neural_network,1)(P,x) \n", + " \n", + " # Find the derivative w.r.t x of the trial function\n", + " d_g_t = elementwise_grad(g_trial,0)(x,P) \n", + " \n", + " # The right side of the ODE \n", + " func = g(x, g_t)\n", + "\n", + " err_sqr = (d_g_t - func)**2\n", + " cost_sum = np.sum(err_sqr)\n", + " \n", + " return cost_sum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gradient Descent\n", + "\n", + "The idea of the gradient descent algorithm is to update parameters in\n", + "direction where the cost function decreases goes to a minimum.\n", + "\n", + "In general, the update of some parameters $\\vec \\omega$ given a cost\n", + "function defined by some weights $\\vec \\omega$, $c(x, \\vec \\omega)$,\n", + "goes as follows:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\vec \\omega_{\\text{new} } = \\vec \\omega - \\lambda \\nabla_{\\vec \\omega} c(x, \\vec \\omega),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "for a number of iterations or until $ \\big|\\big| \\vec\n", + "\\omega_{\\text{new} } - \\vec \\omega \\big|\\big|$ is smaller than some\n", + "given tolerance.\n", + "\n", + "The value of $\\lambda$ decides how large steps the algorithm must take\n", + "in the direction of $ \\nabla_{\\vec \\omega} c(x, \\vec \\omega)$. The\n", + "notatation $\\nabla_{\\vec \\omega}$ denotes the gradient with respect to\n", + "the elements in $\\vec \\omega$.\n", + "\n", + "\n", + "## More on GD and cost function\n", + "\n", + "In our case, we have to minimize the cost function $c(x, P)$ with\n", + "respect to the two sets of weights and bisases, that is for the hidden\n", + "layer $P_{\\text{hidden} }$ and for the ouput layer $P_{\\text{output}\n", + "}$ .\n", + "\n", + "This means that $P_{\\text{hidden} }$ and $P_{\\text{output} }$ is\n", + "updated by" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{aligned}\n", + "P_{\\text{hidden},\\text{new}} &= P_{\\text{hidden}} - \\lambda \\nabla_{P_{\\text{hidden}}} c(x, P) \\\\\n", + "P_{\\text{output},\\text{new}} &= P_{\\text{output}} - \\lambda \\nabla_{P_{\\text{output}}} c(x, P) \n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This might look like a cumberstone to set up the correct expression\n", + "for finding the gradients. Luckily, Autograd comes to the rescue." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def solve_ode_neural_network(x, num_neurons_hidden, num_iter, lmb):\n", + " ## Set up initial weigths and biases \n", + " \n", + " # For the hidden layer\n", + " p0 = npr.randn(num_neurons_hidden, 2 ) \n", + "\n", + " # For the output layer\n", + " p1 = npr.randn(1, num_neurons_hidden + 1 ) # +1 since bias is included\n", + "\n", + " P = [p0, p1]\n", + "\n", + " print('Initial cost: %g'%cost_function(P, x))\n", + " \n", + " ## Start finding the optimal weigths using gradient descent\n", + " \n", + " # Find the Python function that represents the gradient of the cost function\n", + " # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer\n", + " cost_function_grad = grad(cost_function,0)\n", + " \n", + " # Let the update be done num_iter times\n", + " for i in range(num_iter):\n", + " # Evaluate the gradient at the current weights and biases in P. \n", + " # The cost_grad consist now of two arrays; \n", + " # one for the gradient w.r.t P_hidden and \n", + " # one for the gradient w.r.t P_output\n", + " cost_grad = cost_function_grad(P, x)\n", + " \n", + " P[0] = P[0] - lmb * cost_grad[0]\n", + " P[1] = P[1] - lmb * cost_grad[1]\n", + "\n", + " print('Final cost: %g'%cost_function(P, x))\n", + " \n", + " return P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## An implementation of a Deep Neural Network\n", + "\n", + "As previously stated, a Deep Neural Network (DNN) follows the same\n", + "concept of a neural network, but having more than one hidden\n", + "layer. Suppose that the network has $N_{\\text{hidden}}$ hidden layers\n", + "where the $l$-th layer has $N_{\\text{hidden}}^{(l)}$ neurons. The\n", + "input is still assumed to be an array of size $1 \\times N$. The\n", + "network must now try to optimalize its output with respect to the\n", + "collection of weigths and biases $P = \\big\\{P_{\\text{input} }, \\\n", + "P_{\\text{hidden} }^{(1)}, \\ P_{\\text{hidden} }^{(2)}, \\ \\dots , \\\n", + "P_{\\text{hidden} }^{(N_{\\text{hidden}})}, \\ P_{\\text{output} }\\big\\}$.\n", + "\n", + "\n", + "## Feed forward again\n", + "\n", + "The feedforward step is similar to as for the neural netowork, but now considering more than one hidden layer. \n", + "\n", + "The $i$-th neuron at layer $l$ recieves the result\n", + "$\\vec{x}_j^{(l-1),\\text{hidden} }$ from the $j$-th neuron at layer\n", + "$l-1$. The $i$-th neuron at layer $l$ weights all of the elements in\n", + "$\\vec{x}_j^{(l-1),\\text{hidden} }$ with a weight vector $\\vec\n", + "w_{i,j}^{(l), \\ \\text{hidden} }$ with as many weigths as there are\n", + "elements in$\\vec{x}_j^{(l-1),\\text{hidden} }$, and adds a bias\n", + "$b_i^{(l), \\ \\text{hidden} }$:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{aligned}\n", + "z_{i,j}^{(l),\\ \\text{hidden}} &= b_i^{(l), \\ \\text{hidden}} + \\big(\\vec{w}_{i}^{(l), \\ \\text{hidden}}\\big)^T\\vec{x}_j^{(l-1),\\text{hidden} } \\\\\n", + "&= \n", + "\\begin{pmatrix}\n", + "b_i^{(l), \\ \\text{hidden}} & \\big(\\vec{w}_{i}^{(l), \\ \\text{hidden}}\\big)^T\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 \\\\\n", + "\\vec{x}_j^{(l-1),\\text{hidden} }\n", + "\\end{pmatrix} \n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The output from the $i$-th neuron at the hidden layer $l$ becomes a vector $\\vec{z}_{i}^{(l),\\ \\text{hidden}}$:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{aligned}\n", + "\\vec{z}_{i}^{(l),\\ \\text{hidden}} &= \\Big( b_i^{(l), \\ \\text{hidden}} + \\big(\\vec{w}_{i}^{(l), \\ \\text{hidden}}\\big)^T\\vec{x}_1^{(l-1),\\text{hidden} }, \\ \\dots \\ , \\ b_i^{(l), \\ \\text{hidden}} + \\big(\\vec{w}_{i}^{(l), \\ \\text{hidden}}\\big)^T\\vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\\text{hidden} } \\Big) \\\\\n", + "&= \n", + "\\begin{pmatrix}\n", + "b_i^{(l), \\ \\text{hidden}} & \\big(\\vec{w}_{i}^{(l), \\ \\text{hidden}}\\big)^T\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "1 & 1 & \\dots & 1 \\\\\n", + "\\vec{x}_{1}^{(l-1),\\text{hidden} } & \\vec{x}_{2}^{(l-1),\\text{hidden} } & \\dots & \\vec{x}_{N_{hidden}^{(l-1)}}^{(l-1),\\text{hidden} }\n", + "\\end{pmatrix}\n", + "\\end{aligned}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The final parts of the code" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def deep_neural_network(deep_params, x):\n", + " # N_hidden is the number of hidden layers \n", + " N_hidden = np.size(deep_params) - 1 # -1 since params consist of parameters to all the hidden layers AND the output layer\n", + " \n", + " # Assumes input x being an one-dimensional array\n", + " num_values = np.size(x)\n", + " x = x.reshape(-1, num_values)\n", + " \n", + " # Assume that the input layer does nothing to the input x\n", + " x_input = x\n", + " \n", + " # Due to multiple hidden layers, define a variable referencing to the\n", + " # output of the previous layer:\n", + " x_prev = x_input \n", + " \n", + " ## Hidden layers:\n", + " \n", + " for l in range(N_hidden):\n", + " # From the list of parameters P; find the correct weigths and bias for this layer\n", + " w_hidden = deep_params[l]\n", + " \n", + " # Add a row of ones to include bias\n", + " x_prev = np.concatenate((np.ones((1,num_values)), x_prev ), axis = 0)\n", + "\n", + " z_hidden = np.matmul(w_hidden, x_prev)\n", + " x_hidden = sigmoid(z_hidden)\n", + "\n", + " # Update x_prev such that next layer can use the output from this layer\n", + " x_prev = x_hidden \n", + "\n", + " ## Output layer:\n", + " \n", + " # Get the weights and bias for this layer\n", + " w_output = deep_params[-1]\n", + " \n", + " # Include bias:\n", + " x_prev = np.concatenate((np.ones((1,num_values)), x_prev), axis = 0)\n", + "\n", + " z_output = np.matmul(w_output, x_prev)\n", + " x_output = z_output\n", + "\n", + " return x_output" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## And adding Back propagation\n", + "\n", + "This step is very similar for the neural network. The idea in this\n", + "step is the same as for the neural network, but with more parameters\n", + "to update for. Again there is no need for computing the gradients\n", + "analytically since Autograd does the work for us." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# The trial solution using the deep neural network:\n", + "def g_trial_deep(x,params, g0 = 10):\n", + " return g0 + x*deep_neural_network(params,x)\n", + "\n", + "# The same cost function as for the neural network, but calls deep_neural_network instead.\n", + "def cost_function_deep(P, x):\n", + " \n", + " # Evaluate the trial function with the current parameters P\n", + " g_t = g_trial_deep(x,P)\n", + " \n", + " # Find the derivative w.r.t x of the neural network\n", + " d_net_out = elementwise_grad(deep_neural_network,1)(P,x) \n", + " \n", + " # Find the derivative w.r.t x of the trial function\n", + " d_g_t = elementwise_grad(g_trial_deep,0)(x,P) \n", + " \n", + " # The right side of the ODE \n", + " func = g(x, g_t)\n", + "\n", + " err_sqr = (d_g_t - func)**2\n", + " cost_sum = np.sum(err_sqr)\n", + " \n", + " return cost_sum\n", + "\n", + "def solve_ode_deep_neural_network(x, num_neurons, num_iter, lmb):\n", + " # num_hidden_neurons is now a list of number of neurons within each hidden layer\n", + "\n", + " # Find the number of hidden layers:\n", + " N_hidden = np.size(num_neurons)\n", + " \n", + " ## Set up initial weigths and biases \n", + " \n", + " # Initialize the list of parameters:\n", + " P = [None]*(N_hidden + 1) # + 1 to include the output layer\n", + "\n", + " P[0] = npr.randn(num_neurons[0], 2 ) \n", + " for l in range(1,N_hidden):\n", + " P[l] = npr.randn(num_neurons[l], num_neurons[l-1] + 1) # +1 to include bias \n", + " \n", + " # For the output layer\n", + " P[-1] = npr.randn(1, num_neurons[-1] + 1 ) # +1 since bias is included\n", + "\n", + " print('Initial cost: %g'%cost_function_deep(P, x))\n", + " \n", + " ## Start finding the optimal weigths using gradient descent\n", + " \n", + " # Find the Python function that represents the gradient of the cost function\n", + " # w.r.t the 0-th input argument -- that is the weights and biases in the hidden and output layer\n", + " cost_function_deep_grad = grad(cost_function_deep,0)\n", + " \n", + " # Let the update be done num_iter times\n", + " for i in range(num_iter):\n", + " # Evaluate the gradient at the current weights and biases in P. \n", + " # The cost_grad consist now of N_hidden + 1 arrays; the gradient w.r.t the weights and biases\n", + " # in the hidden layers and output layers evaluated at x.\n", + " cost_deep_grad = cost_function_deep_grad(P, x)\n", + " \n", + " for l in range(N_hidden+1):\n", + " P[l] = P[l] - lmb * cost_deep_grad[l]\n", + "\n", + " print('Final cost: %g'%cost_function_deep(P, x))\n", + " \n", + " return P" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Solving the ODE\n", + "\n", + "Finally, having set up the networks we are ready to use them to solve the ODE problem. \n", + "We add the analytical solution" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def g_analytic(x, gamma = 2, g0 = 10):\n", + " return g0*np.exp(-gamma*x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using neural network\n", + "\n", + "The code below solves the ODE using a neural network. The number of\n", + "values for the input $\\vec x$ is 10, number of hidden neurons in the\n", + "hidden layer being 10 and th step size used in gradien descent\n", + "$\\lambda = 0.001$. The program updates the weights and biases in the\n", + "network *num_iter* times. Finally, it plots the results from using the\n", + "neural network along with the analytical solution." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "npr.seed(15)\n", + "\n", + "## Decide the vales of arguments to the function to solve\n", + "N = 10\n", + "x = np.linspace(0, 1, N)\n", + "\n", + "## Set up the initial parameters\n", + "num_hidden_neurons = 10\n", + "num_iter = 10000\n", + "lmb = 0.001\n", + "\n", + "P = solve_ode_neural_network(x, num_hidden_neurons, num_iter, lmb)\n", + "\n", + "res = g_trial(x,P) \n", + "res_analytical = g_analytic(x)\n", + "\n", + "print('Max absolute difference: %g'%np.max(np.abs(res - res_analytical)))\n", + "\n", + "plt.figure(figsize=(10,10))\n", + "\n", + "plt.title('Performance of neural network solving an ODE compared to the analytical solution')\n", + "plt.plot(x, res_analytical)\n", + "plt.plot(x, res[0,:])\n", + "plt.legend(['analytical','nn'])\n", + "plt.xlabel('x')\n", + "plt.ylabel('g(x)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Using a deep neural network" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "npr.seed(15)\n", + "\n", + "## Decide the vales of arguments to the function to solve\n", + "N = 10\n", + "x = np.linspace(0, 1, N)\n", + "\n", + "## Set up the initial parameters\n", + "num_hidden_neurons = np.array([10,10])\n", + "num_iter = 10000\n", + "lmb = 0.001\n", + "\n", + "P = solve_ode_deep_neural_network(x, num_hidden_neurons, num_iter, lmb)\n", + "\n", + "res = g_trial_deep(x,P) \n", + "res_analytical = g_analytic(x)\n", + "\n", + "plt.figure(figsize=(10,10))\n", + "\n", + "plt.title('Performance of a deep neural network solving an ODE compared to the analytical solution')\n", + "plt.plot(x, res_analytical)\n", + "plt.plot(x, res[0,:])\n", + "plt.legend(['analytical','dnn'])\n", + "plt.ylabel('g(x)')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wrapping it up\n", + "\n", + "By rewriting the ODE as a minimization problem, it was possible to\n", + "solve equation using either a neural network (one hidden layer) or a\n", + "deep neural network (more than one hidden layers). How well the\n", + "network performed is measured by a specified cost function, which is\n", + "the function the network tries to minimize. Using a trial solution\n", + "which satisfies the additional condition and being defined by using\n", + "the output from the network in some way, the minimization problem\n", + "could be explicitly defined for out network to solve. The proposed\n", + "solution from the network is then the trial solution with parameters,\n", + "that is weights and biases within each layer in the network, such that\n", + "the solution minimizes the cost function." ] } ], diff --git a/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz b/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz index b3dd04a5793087757b4c015525fa9f262861d696..a3461374c3f44d0e9d62191e423feca78ca7b4e1 100644 GIT binary patch delta 20 ccmeyop7ry3RyO%=4u)ePjci-l7~h5i09T#|r~m)} delta 20 ccmeyop7ry3RyO%=4u*dojci-l7~h5i09iH%)Bpeg diff --git a/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf b/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf index 96f40fd3edd4952c69fc4d67066d16cbd07e7cdc..e6e3cc0f6a457fed58b1cca7bc332dcb0d6b751f 100644 GIT binary patch delta 254957 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 z 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

    om`{DiDM;6)xmF1PhlA@zBusQz_ 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 delta 181733 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%0D%ytWm8m!>NWJpN4^30#leRdvvwf$ zZ^lM)A((#`dA0f_56u-mteFENRe z-!uXGt1}M=$t;|J4t6Z_DEF>1N@+HPsR>_}O>~vo^@@X_>UhkY6Ni>Fe6q|3olIH1QuKoDGlgH2~6d zirB&do}P4m0<_mJ4Bq<0!QL9Wk+(Xjpy_kcjq^I(c0bmdjnkSSDhIlN&49)3V(DxO zc<*gN1-2@<(ZDbrtBjs*REV!x0dDZdWK2vrLE;Z}a-c?n!WjPV)r}^?5Uox9SmGWw zMTmcuo?Rd?y^@5Y>8=Ye`ER0BQIl@6I|B~O6I zSw|N1_^~ymGggPEFPyHYc)Nr2&&5jgqYA(1MCz_y+Ez}Chs(3cno+ams(th()_v3JuO=SVoZHTd+n%*`?mwsakDyPff}w>k@~d{&naTQPc;Kf5gW)WUk3yG zkxQR8SEN0&Y)G&*&qfs4P;grh+`r~ORC_hqYG3p*M`aNH%Y;v9=RSPBIx$IjLUMo1 zLJj5Iw;s*APuP#4dB;OoH~`pQNifx3KOo$8qgS586_PXLyD^1wPXqf;d zt&$JTq|v=x{PjHg=-YPtVaOZgvnc7jsOl)lL#5#Qp`rraZR;>rZ9VU}K>GKHRq@ig z*UyM5z)dK*06hP)NJ=W5!YTH_=>>m+?27FSl8mQBo$6~LNIUK&nP@SVx3X@(_y7H7!<^4@rc0;tTEcM~NF{rdM;QljdtGLvTR-NQPN0hzB;Q-%l~eEM_6dbGG8Az8rRH`A{2>(DI} zVNRGB<5ahHYVCmUYYi?RLLRqQr3|bbS`OIc3-_G&gUM@!{<&y&sPTVY&RAzWt3;(s z0syoS)L@gAF53XH_LdKEU zhpIT3>|cML9T&a!nw1I|9r&p_o@GaQKHFAkp&(v7*6lo*zV4%!q(_>1@B!^GIr&#W zQNaZaKOc{IgFB^3;O2k7mcKR>Lp~;fa!OD(UlJIHdcawbYhE6DmD%auoY+!>YYFR$ zUuBhF>Xd?csGrzRoA1dN94D9O79($Vt^HI&?NCU*hJ3u!#@$^g+2$qUD@AK7#%6-9 zcx?c#Hfg%QMa*f0Njnhyxa#y`#E&T4^S*Ev>ZDROsS_tsXDWZUh20NZkeo1W9Cw5^r;~f%1BsP^)tfXT|dACl& z%e#~NV^+5Qm{crhT4C&LUS~2+2S87tQbvwXFfLLk{9|RsfI2S8YJK7`)~bT;Bmhqf z)X9SKP2mmsu}pt-;npz1`8fdtiaM?Pjg`4T9h)l^ z>RPF#hRhY|Ub=v;r-e&)`3L|UPiN7Z34iTV1JJH^32U$buca9Sa>Uxmcb$_%!d87! zEYzX(5HOSS4%JIo1KDFkg}DEC zk@wivbSEMwFuhq2LFHVxJICl%Id$GC%xZ2O^qZjsm(#LjSuOgee2D z3c^WTI?8jvH#*P^d|s|r>1$ymrJfZ4>E2*VNTy5D4vM8&DoX36{?jU-TtweI5LcLD zFoR)@acs^}rbS6NQzZ471>*1I*=Z}1(#9IWm)Ewcg}m5>N+YJwg=VTR%rJE<#MSr4rBGBh7ONghMW_c+G4$Y21EDM za9IYb-Q=QyH@x)Z>*edRy&dUELH&C!kjo{8NsfWP2bw56%QAlW6vRzAyt7(}1F?TG z9NoEvL@V`how1#myuvwK{2*LEwnFTO_o_qC1CtSjO-F-iamH`&Xt15T^h?DRD2iR( zxXdS@?Ktj;)$mpYXWY{IRJV--u#8h}0V!kdcefr5>F?9)R4OTm7PP48wYW~dDlQ1U z>Co@vvm;E$Vm+=lx!Q`uO|*xYr-^^@!MjgelGKdEG*G4I);O#xo&mN)KszaoW*iMv zYQP>M+uCSsrb1M!5&7JcG;2c!J0cp4O^V}HV>4TS!ze<0jx#!sK%JW7rr__}N&2ap z7!h^_-TA!jxM?NZ7nK73nGtKUj*WhL|V zv>JW1sE_-`-B2qdUzo4r#V2)dvGcr3f8E(&d}1np1ueQr{1C&m|l_QS+Ed%O2m~j?91Xv!yW78E#`xUSXiac9sJ+#UjnZjz&ElIAMUOY_Ngq z_eunrTgq;U<0q>A9jxKHW3N-tFQ#U=%rpTz`NI0ZP|4L_LLSI7W=7_#9G!BtMfnU! z|6}B9HDknhpmjAFq5YzsL*SfH%BFILS&LN=(8gZ1kR#w3yS6@}CGvkvVZ68eq#Cey zytK|!Jf=V!*L;#DB-C}lMJWs9YP2^|V{HxhVN~J_Gyz+LB|p3b zt%P%am0(JEJB$m)#hf6?m3hRQ$dQxzg@s|0`%vvf>}J+^F57-#V_acW5TO~obvm-R zsKjcTY3q&DCa+DQf6ad*M2Yu=d9*}npzjo&q@QVL;kC1XC~)M|CQ0lBFaQS^7Hw!z z5Clz2{M{C4)HShzoB zfC#iyPfoFny-8KAcdn14S;8L;AklV|jCGOPBK3J#W9vAE?wWs;MKB-~JQz@(W|t#| zlctmiL4 zQBxsss*g@1pU8jTYUglp`enh2rc!gYL@YkBg*F)^>7%Z|3z7Rb=|(hmlMQ!I4Kmd0 z+uZdb6&|fX#Gy1frAj_Ei?0A^owWDQmk%R4D5e#3JoDE8Lv~gOM4+o`|OBK zZ^t@`LAd96cqgw7KV^Q2(5Jw3fhY42O8Rt0Z|%IbPzmx+33O4<%~X_R7B99lQ>NeW zPFHsJ(M;iq5b|x01I&^&KI=s}PtOY$KN;xvb6*RzaJDsItrSpc7L%HAWEB%&xUUSf z1PDarzx990gGJ$mm-~UoApF$_h6w{{J+15HOz${$;ksi`;=tk5MCF+sOuI|rB|Pi$!GQ%}nL<&QtW4wp!&Ri}1Pchu5kIY6g` zfzvRMP%~#|o9m+|Ax3{vd|lW_^oe5y)>>>79!jX_Xk7XA z8Sv($*2>v^2Vl7rEZdr<0+>=FKvG;Qt&7D$C$-=)hv5t~0XLIT%VWTRi8ouATo15r2r0PJb^cXN2$QWk|ZbtavJG-y@pl*9;;YZqTo)RBeX=(l> z#g=~!xLaqJ#CJ-c#FwZ3ii9Ez2Zgl$sL{b0s8t-kit{s8V}{Migcu6caMbI32;O`@ z9_Dg0-&g*fcHal06ofYtAncCo1p~TXByHwHEQOPk62%U8!g$1Jd;L z&+z;%-`o=2d1MvAc|1R%HA8ER27^tV2aUW`goc#;}PlAy5yLS9??eqqN2= z5oz@(I{HT>fv3nPuuvV!!=CN8$h3{iR)SjTTt@MhKuzl)OYMdkW*YLA76jGHwQIw< zaUQ+yh+Qw{-*OFw-h{G7Z{q&KmGmG`e63UMwpy!zk+5YGPmR>ZTB8`9V zuQ53vSlpIE8#vLUu*E;L&qa0+1OvrzdjRiAPL8!SNsK$(KR1Z!e}M%H@T6E5;jAmc z(7mHrd|)*E(3cYX5{ov;8^M?cWDp{g;;B+ksk1s#5!zhGqU=g;Xd`Xejj|H(`zYBt ztZQ;Nap9fZMkRU|KO-Aml{yA~hNyqlZSoubhK-Ai@6m`x2!-OhNPwBB!F;xqp7EQB z%ILfU>Dzk}0+6m4z};8i%>Ij$LX5Pgdeswk;=wyEbO6xJp<=X0Y=Rf;?hSb-W%jmu zYd#T;6q$t|B@e1oCYvMriv5NZRs#$+RUP;=E zQRT=r@M9PAh*L+$jx2h~u1l%K(mnYfdGR{ECoxHrqu4I7;MP(54&`EEP9X;O& z4C5p7Ype5aUf0_}NgPz3H2bm!k8;#33|X@kTVRF#LPB1DvN^?z7YTEyF`sX2$)rI* z>}a(ttst$yS?Vnj4a|h2h4+6=p}xCNpm0hwO4|u|KzSRw?+sz74pU5z50k5!Pn~aa z0>By1!7f(A{Lt+)XgV^l6CP3PYsf0PdZ*dDx|xh6c_Sr@q>74$gMUgN;e_@~)Nl~U zm)t8@a(Rhn$^z5TdYZtQW;^&DP+9i|DMYK7fwT~Fn)2+wdOH{NKGA=9ZrdqwIYdAy zyp2(JWEH(Xj!aMvjS^Mq(JAC30t?~X*(}WEidWFQ`$)Z?JM}O-LVy;Fj9_GBR{k{# zPb`MXs*izpN+}Ub(rS!niC(IN?wz`=%=w?z%TE25ti2zn&gL8jcdkoNJSjGKiu7b!m4zhoMbQ>F?M$;bSH0ZpV0%9AdCm#D-Db9mZo@#Cp0TCtg6_AZL zP5wZ35g(C?N4{-nA9a|WF&!fAXXhKh12Sj~7uEY6>0_Ni$UAx~(AQQA*3d10%lC8(QOxdc^^F|S?J zd|opo#UwT)SFuXP|J_O$nX`$M=bJ&T(9HnnqI*o@xQ0wIUT}z{exex)2UOJ00e%6X z8^n?iDc7a&$9_v-UuZlC#3@hOmb`WuGvnT=SL-@Q!Wiyf3O4X~d7g@FpSzxbPV>wk zi65y~SJ9d^Hg|vU(qlxwJ{ty86W?%^=<2X}K&+?9P4>iBOJ*X3Sl7EvoEir_q>2yn~O z$Yt$DSexZCQp{XXZol}AnCAl+Q{pUV+;NC7{R;!2L%)AyYbk%6qY^Zs?aAIQ(ZdKf zbj-IRII)pJ+H!w0Z^Z&pTo85YPW&o8X`|;plm-#qASwvy#ZLa7KDHL=OfCL$fpkW$ zVB||Z!zGZzq*7)nh#uE=29#EN$dC{SF=Qc8`{HxTgfv>t^|Ek$qNqFdAZC$9@ zukMV`AP`1vqdN8jGONg^0Ef3w8I$7vSWRyqXFjI`Htw25Iz6KQk6lezM{UYRw$eUy zroPTfbI;gRli`g?6H{o){rV{uhMz_Jm?wYrUf7|1tH3jNJ4VmNTG4%5HCIy2$j%|Z zaFCutv(8~pU9^`baIb2A6?Rgj;@7(whlm5xDMaDGz9kizBAba;PHuCi6MM=_0hnn< zfqGp#H@;@q)_74zu)P`aS zr1-x4Ye=Oo1_u*Q_9i3`tvx!)QWEA;?Y7T(E^q6oW{!brRjew_HFMxY6C1m4d=MlL@}^3_wre|sDm5NCGs_c zLl%=50_Xrq@-fdoX);jN%yj#7ot2VZnS_7FQ-}->;c;ev&;2lXm_EyO!=>(pTKg#R z^PW}%*MA`;L+hR_pMG{HSOXUW#~Yx3`5Bm!86f;0JiRAZ4Kuk-!*WX z&=sq*$IH~6XOibKygz1;xZJj1Q!%{G07g%nDD!#}GbMQrlCRy;u!G*R(GTN8!-dIJ zS$d-7NqQDP2GN(-_%^=mlw5ye?%ZjDogWiQ@|?3g`QfUz8e{6{mk1w>gGdg+MG!hs zslyrNAMf0h3#{nDcDWQG@kW;S8K#xHkD0iYGR%>vv2!N%6nGoFMh@y5k*>v%1oJ{_ zrvQ;eC}t-ywZlaqZx1q=WA*v8S1`SWNaQs^@>^B=a`}c&L2q1>`tz9*N7@7>!t6B_&B#?aJqDlR39s2q${A zhSurUX>OCt&Vt9kqM`_f27p{68^lxR@l-vC-ASmx@moc<&BmHTm(x#Fn^wZY~@StEl#gEfn8Q-ps(J^=Ufj?Pz9)Pt6PC=97(NW@(@8pQWh^=EIh->X>BP<7OOC7~|F&#J2b1Jzx22?}Ly zWOHgZ|J+I=lMPVJ+FDq+_~p{miIm9{W+KKw6Pgf9fflOwQ*PyR6D_{oVNuY-lNC3z# z3J^X(2gHH|GL8bA`~WyeLYVvEK?y(*v3FyPBa)y_2qGBZ((dEBuY+f=7q=O2!C|V*CIU=nN4v!jZ@l5&Zu-d4JT>_QGI{5FVg^;D7Dyp8*IDG{*0L z5BbB@3fyHcXoMqpATWPmXreaS7epDONl4dUt^Q@#BO%D=Lmlga0m)<9Gg<5&ISg6b zl#vAx1Omc;4BQ|hX8mlQXt@rBS3ZsEhhzt zIS~*@^5$?RX`o$PcHuolMqwY~v>%a|`GvTHq&N7#A6VC`!F&GqL+uq z-W&K&R6;^(A4=}^uWG-m(|C7-@2w*7f93kut8MSzj6}e>gH~u1`Nh7^g)CtL+SgW` zyhkL+cJk+c?|=5c72x}K1@4R1(7^cyKqaLCsHB1{S>4hy(twC$eL*B-@Es1R6y}y%9Z?(v%kM6s!yFJ)7))=!`rOz&>sWY@}>JOip0 zgwzCQ@E70=brtP{l0&d}tog!@VSbL*CY8NjMVY97eLw`kgE$#s>Ydq^q86bU@PXix z$7h6Q^|SMA3Z;88>JsWs0T!KenhFg~8?lnFc9@q_&e)aIjpWk$-0qcl#7e-h_zo~} zG;$7fH&T*zHdwF6AfBoZ3ctOW7s1x4e*oXy#AN$}%b+ABAU*Iq6;VfaqQEztm>(!)SrbQW1E^r`Q@wanSMHU$$Wked@wx%VQk+nGPAjSPE_n-%~-F*uc-Twd7g@G>c^sLU{b zbaacHgeR0R+N1#SYhiS7p~;JuWsGOJpEdIZex)ua#V$$;}XdYn`fvdIv6QyHD_XWz~*uhPOSjPr{Xl#wy#U zHFN=;lE_6%g(17Uj~6;+Srn3MqO{-i-`DML$9l#wn|&{!SM`JWP_$0@yVua>$-4~= zGC~&<&D(wLnTL$wTAfM=_BJC<|KkRE&PF)C`D-=oY#AJU45@rBmk3cFhP}Cew#}c5 zql?+!lN=fX9pFBPib(7~%j2}B)CjJe$b}3($iGAnB=+?ypDjaD3N4^lR z*Pau@3$LOpgdBN|{A=iryk&U&;`?ahGuf*9H}fQ;gKD*%LymXJWBKq`E-{V@i>)sN zE_k|D$>vD$W?tc6n_s{ri*9*;2psjjUl^ZX3KvORR_u;RHS0Hn8gS+xhive??~7}Q zyY`yxX^Xvx1jkVLiYK5!h|d#ixWyz$=lA@X!Mz7tTF2T8SPswTyRMHJxEBsVzl|cUq4m91PPK=T*{fVQK{FtTv>^GEU(s;=3ScKp``m3 zPB@wMCH*DxX(FZJ6|XT<)=0O9dNJpMtJT21_cz;=oe%Vd965PAHZqXInZej{=iS#% zx9F_Tw;#(<#NSchI*_ZEZWlB>?Op&yF*|mN9HNO!4llmNdc7-uF~pLgJ+o5!HbeD# z#MA+uQHYxsgT<%Gn9i>|D^sMR%IEd-vT7NZ&@6m1+4r((_4@~8%cxEt^L63zo~+!O zR=L9-&BDp1ts5iu{P{C@rB&N#2F$+mMk!zX=dpMvg9ki`?`s*B2Fxu@=6u|mQ?^P| zL@>N#wozv%BFkxiLRgJhpYN6TmeX&$v&jGpC!)>=;=lsk(EPi_{<`&=_7Q zVyf`EhVRADQ6#mu8Jjp;$qth#<=KxYqF1^Tn|C00W+2-*FnCEIepXRHD+tij<`x-y~Hz6!VG2zZ#4 zI6eusm+vgmJ{P6%tiT^_TLBzFd+SQk2V@IMx6V)p8TXlXYuvOw#&bD$8A;(~H3!*@ zD^I-g>U_(Uj~&#^-SoLX{L<6XL~7;HgAsN$33Due(auj~il$rhCo^5t+{BisT2K+! z)7}_}G|f7t z>ccR9W(VaQk@yFQ1O=&^3ip^AWfF?BrIyF_X6#ygWL1cid0H=xu^q+$hd_A0{e7Wx zg;->|NzE(@|7At`KJmj*0{;|?!E2j)@soutjLNBx;x9!LL1Ty zx%IV-A$0x?8shffTqYW7?6z#rul994s}Ec(dbD1ZfATpCTq7;6T^r)HZmXz0wQ@C6 zQ#4G9)FEAwUgsmnRp`?mSpUU9Zkxxfw&57v<}3Ac2ic;ec+%_FT+fRQmAV}Y4_v*A zO3u%WoYDcuu8M4$F!if-p_NPuAgI|qk!S;qbG)jpUwT+5c3 zk+h+A*iLx3lH-ffiEw2BFDnC23t(cC%g1we`=x+@>VQvMX=<3f4sWtiGQA7eE#I+XWatDYn(^lRQcxV zc_>g~JKEOiaTl zcVx?sor05khfC{_cu?Z-vv)0$_9q-N)N~rlDAw=6MetP|o#-Mwe4grIx-;JLjOm6- zf8?ah%NfI&^Rv#d5s^xI;+N-#doMc#9;opy&2hveHZ_^x9HaN4tOMc)(?Rt2zi`Au&+m_8M}de;6U86P?6)|0%c*vujCIZhqZ< zuf1b{0`E$D(LtsA$wbG6&9Cu^({2=Zf4@KXtq_&YWD5N$)dc+(n51d&Ma!mY>%+zM z`JB)iuf$jK1y+uUs`N6P3bkx16%NG@C1pr0WAdHaDYRy6&zaUtny@WyJCbfINpr^~ z-#mJ$`B_DGT*;gE;5{&6($MBqS^Z(M4v!fGye6G4x+q=cag_}nN4+2>Ti}nie~A6| z)xjx9WBE}b*HYilpmW~WaL`66R~^1&tyvjVWX;cD6WtiL#nopC6*OjtqEFGhv*}uX zzCoA7N%5szDO~k1lxk!rIcI(oGH9U0EDmq`R$oF(ELm;~({UO(zj>2`3pP;6|0G;P zl|$xniGUifF|pM91a-0$w4?QEf8jl+@Sce^>uYAXDV49y+@lNCrT3{S3+J6?Z(1no zvcXrE)K`fxlme4OzAIaX>!9!hhZX36oWNT2>8eGR#ZNHiCG~-}AdA{rmzNva`nMun zKfxyPp0^l@OKT&e_^9SmNGMde>6!lP5QR%~J<%byC!2Ge&@Jpga&Nc4f3R#{ssf%B zB>{pbdQI};%6LBdQY`u!{SZKZDq58NS=-3NT6NUx@+FthTU5`!K6G>35jGAlR#o_%* zr}A6R;o{AZqZ*WlE-SlXegs){6>*Ll5-S{$1A@ufDN((vx12huJP;8|0+_Qfw1^fxek0heA);=DqPd1K@lZq{-ViQzosquSxrA zxk(^>TJiZ4^_ta(<-Phob`m)n#w3QOlX-f@E*~dc5@h`f3@-6h-+3y zqwSusA&!bF>YZ`ccxQ{GdrkC)Zd|?4gT#27G6m{|>`h2Et-ochM`^nD(bbuOnUXt3 zbBdJy)h0Ds4=HVKSoPDVtG0UleBjiBezGYmOgE86xpDOte<2bm=eD*PpqRfVImKN5 zf#qbXi-^!rrNa$hQ7fis{yB9i#Sam;7=-$75xf!{Nq!&Kd~ptW>%(r6aOgP3MGi%z^tZ zhIdKH*fX0le}GhjK;iVIDwD8l$SHZwmka5}N|v+mAC8MxKI;@--SJ|LADQm1cq_eN zt>=HHN1I2-?tF4A45}3tZgeO8n}*{Ny$b3l-nmR63ti&|Z7tB|EAq{X@WHpjVK1E+ z=On>7Vb?9QUTtB0cD-ZV<6ZYP@Dg_>D#DyTQ3{8ye~1^HKL<7Nh+Vrmcl-ro$QHWt zcGy7)uDU~1f+zgTBd>9%Ai^KheGVPx>do#MXwil+^KwIV%0=5Yj>VFyG=u|kr}VUN zc}a1=ShzsWNgj@*CpS$^mcKum_Ii7Z&SE4TPpJ)bvE3FIuAM*2TBmxj_LJO{ZP`NB zC@e&!e|W)A>OJ!~*N|u1+FcIfpjKw2NCJyl|8zs?4dp?#IsjHI52v2CRF~^GKl|fF z98>Q%tRr11qfrTKWXiy(R`i7q5=Xq1XJ&?Fo@z4wDkh15rfqoAuIAqLzQ5%~b7e+T zqMZ2F$qepIr5#Amkbh*l(Te8wEvn;Pn(U>we?2Vhe3KAOr#Nkcg`JBuWqF%AR;7i8 zls35~(ET;ore&3vW7Gwmk$AmR9P2Y*eVdOT?8ybUO6HB)>wX-Zh?$0jr&LaFb-rpb zTN!bP8uY6$va9PzZ9Ql8SzyLEBkRdqvqjO!7d|+kT)Q3e7U!f*s_uk~U(r-3HzDCU;T`1M1zjg@L~=VlT_{e$e0e{|)> z%0KG827)byE`&YXTKxQOhcZb)vy~V%v9wcI#tNEQ_j=d&dAJ$gFoYM!ZM7mN@4gdC zc`%+k`uvsfcVkiB0p*z{se+FwQn*UfCNnXwuB*YJx?wkS*w5Q4j1CkA_RsxLo4dp# zz)6Z6T`(su?QCuE9q}^h=hE$@e>T>Ss=^xk^*|EMzdbf$+f>`Y--H|)=^ca(d*<*5 z{}|Ie8vIlxF_gh!OFLCjWm@{DbDBLB{eh*g<9hV7cXZf1bnDLCa47RlVsdCkBz%>| zpLP-Z^tia?tQH3{hOILz?Cq^d-~1#00ldJHYYJsf_25Mrd}W(Q;i&>H;)N?=C_qp^`AR1E}~TY`XZpe~|dJ2wYQa|_6?80?IUzaste z7GVO&7@1guT^y|~0Y)HGfDDs76F>p%0u@>UXu%+WG0?)u#tZ;91E>MD0P3pZDu1c~ zNfkwPCDk`f(7>urc6MNg|EWb(RZU%z0U#!jp!J(G02I`q z`d@jVhQHk9#npt>w3WnJnSb>FU9ULuxrTwqkUPCJb{3#9UYUTj8{ha_nYXO1S z@i8;IxVSKxJ2^s_zz*h2b~eB3Q-8CtbOgA79jpP+PY0k4@Ha6|AX6xv5DVZx0e+nh zK+e(x2yz7ea*_c5qqK!m33Y+a_R;qopIn@t=r5fSIKY@K^PYzs}4O^jjt`tRO8RuByf;2c10- zqdXYO4u}cj3i)mQE1s~J93Oy-mjl2G{r)wl;viE|u&ph$YDctR^odzQd4hl)+?fB5 z0k;N$T|gfHm)6V@WNP;76n{*e?3mR-miA6SX|ezDfr`-n$jpHd01E(U4*^0lhr_R{SSIW90^zTADzh zLl3<;XuqRNgUrAH-hafZ< zvG|ANf8_s!5(b&u00E4w984_iTx|bn)PLPJ8|YX=SCi$h<@QU@^eA58?(ei~d2p0A}%j zBW@M|v&0|724I%@gV+Jg(ti*qwDLa)nnCUlf@YBagLnYU3V;7bJkShEe-Jc^`X2=K z)BJ;=ep-JJv`+1RBVK3}oj(ZbXY_Bx#sYOTvaz%HBjSZhjQ=u##xjP!E`Rh;fyuuS z2L}{E_rV`MD+@HA>7M|stWXHFf&6U&6#@UUfW`p+haSqM*&o)S$o$vq2;GifUSX=mZs1@W&SdO-dqPu*Y_;Y{mBZIL%;s@o8EsUp#HP^ z|MC_Q0lRuIvaKhD8?7ml8Hf>O&)C`A{5J5qX53k@vHMqd7T56lj76!j`suQ zX;BB_**q@Qe<~UIX{s!=ZsaZRO@t*bJdm!zr0$<0KjT~2Lh)u-COu30E5~?BLreoH zKz(3Ol((t%CX#LV>G@d#g>GTPLMEb1?hn@57k>^mIIc6#UNsZVj5fnUo^D=zj4QYGJzArWclLbAm}Z<9(-9y0#Pi-pAoo7$nXOLGn$&9e&|ud& zk3W$*pWeTkfs@$4o#6gTXqmo!fPx@(KYt{vGb7FxJY(HM(=L?vt^JaUm)GjBH*r#; z`TdU$a4yg(e7zN_Q1hQ4`WT)I>Lgv)A}Oo)n=+Gkbf6t zsAmEsr4KReG&KW99tOr*BlY35VRV3(6JopU2DxJ)K4^kAKUfNZ>$xesV0c~cz+eL% zeQqhIM+16k4R=sP&@1Jc21Tp$kcOx0NVp2Kb03V=A3p%E)<6h$foq3?T*fspq3i0U zkCh3MQeD?vo!o6AHL~kvZc9$Z3V#mj!)<3+wx3|eQ+j8cm`_(Cqu{XFoA*$%!}Ozv z#(6&2n6(}g@f)3K$PLY)k4kBoLFz?f<{d0Xv@Jlh+BA39Lu^!<^cLQ*Ze&7}uPD*e zagJxKe4;ZFBhCP~tTI)siH{&pMT*W=Ir*#Np5yKA3Y8?;m8V657e)2M0e`aEb=udl ztZ<|pYb}>Oks66>y4BN+bOye0cp-!bhLmqNK2b!Cz3nYB3(94u6mEhm0+<%U+^tzZ z(7YBvkiez6D`X6*8IyFy`$-t;d+-xuqJ;F#a<-&pQD59rSXmerjg)t;|D=Ieeb~z7 zkT*p2=~Jnpd>usqxDa*{qkl0a@q5Y&3#P(EJXJvOQsr$)f)X! zYwf~@ylir+3O90(48l+){?n$F`f3z5oHF6+wM zIY@3YQv_DkTQ^KW-%_lM($yq6ZOq!E7YvN)YRKkjujk2p^vpZQX`-7(Pj^fSTRd)I z*(QHR=_NR#NIn>QCVwd0@+EtsQnuspBJ70B$L<8_y*xHy-Z{5Sp(%3YHO)isgkf1@ zW38$VtSUQeAfCivPFU*l80F!?&e#f$S}(d{JT7_6l*DK`w!^>i6ezDweW}WRDX@dGvr-xe^3WQkUymZ za>Ta>yM<%Dvb$zUoH&3qI`(;91QNhfrGHja?c^aG&FIIg3YKVHyEcxq9RAcuy{Gf# zdPKj`BkG9bF?2&ERQA%MR7oS8ou^Kdu|~RT8pAs*bh4`Z<>p;9=>KV05!*Mp-PgEn zag%`8PP&GUuz!hBvyX1tM@*Y~v9C|xqS|Wr7KW+tHEfh4#b+D(g+E}Y~MuJQM;*;d^VabuLe^V6|)y`|jwl5Ll(G4vQ;Pxwf+$wOXJy-i)T zlX$Wt*Ii@p9quOcZT?}IFVr+5+LX6M2?lq+(i`W*B!56<&jL@^-{aM|qQf;}#%5bC zB$m@8lK1F+OYMXQs>y9(jim@o1k7bW8)&l;ONNQ0DWxYAcrUQBd5QMDEScyoIU+rO z#G}z*$5+moPh;!LQ~R=Olx}GaYLUd7hnl$Pa-SrjkbttX7%ogWmi{>_n+O7qzl=>Ch~5-Hk|d| zg$ZyhpoQ_L_at%rl90q(`A$XvL$GOC=%jGYV<#VVyIqL<$64^F;;ydqGu75Dsc}+u z11f<8rD){drI4QPxwDc-18>}^HEfH@xLY`L*MFVfg}U->5fn$0OOf|V-iP%0E!&HZ zl+^GgjdLQ$P9U1qjYo&R-m|?}Cxc#Xt_(X9;{y_JeOz|`d;TO@SzT3>$f4^n1lFS< zO}0g^UaLiNieh?Kc-_|%y!qStlW$)M)=pi12$KDAEhLHod~nm{&lSqS^6XGoU#Z;& z(SOv!hHyAKjAVcNI(NT{Z1VlRg9yCww)Xc^S*)3ontm?0EE64WLTm)%w}=FkNdA3e|E{@KE{0nsgx+qZyB5PrEV{!PR?1ygF$=^z#?qKK0DOoqGd#UJx+d)FKj z$;25-4jckflw{`MvK2HfMe9MV8bDEVCXV^1>b-q86cTBY3{b<+5K3^w-2<--JRBb4 zyn7`y5e>~XBH!ECJ_r5O{D0me9;9O` z9+okXCo0D%Pmnv-lH|rta5RiPDnY7u6k7j*_?%e;Jw19U$}7)wY`Bwq)j5(%>4t@6 zKnwLaY4>M%h7;pMzZ_O_mlAd@in{q_$vfHnu)eF{Qk2o*W(8(1y?5u&9PHke+ckD9 z_IZ=Tt|6tx*lI>FfE+Tzwtp3*4~moE*J=?ho-RH z;9i79r0vhdyum83RB)?7!Kud_Ad#Me)%cJ=Gg+!F)C#f7!peb!M z*HfXrUjicF^C|(g1lMcR$g$J-){jdrb{A7i@7dt{n);&(XKNNph<{j0IrG6i7b>wx zYGINCVkry(jC^zL%~Yw0%em;%v0mX}uCy$IJE9Vcu2@rO&GCLe-@amlP*CnD$HGlI z^cD$+Nir+#P7Crg#+%WHSxr**gabV`9A2##lO{xns@gV;X2q+UU*Q20hcPUPB=%>@ zVloJQK9$aGFN(3EGJmv%pPk+j6j~8|Z8VAD;Arh=dO!cNQj@!97c^k2kb5<4p|#I8 zQzKbH!%Uzw^Ja6HjhtJY$gPY1*(>08x018L1L3&lA!}`GT>9DtzQIJ|@%G1N{fQ+u zOAQon`$|e2_JXO0cK4XhCz;9Sg-MhUJ?-3WtQBjzu8=b1H-CjN%lzla0cY>UYcZ4? zXKBWb*if*+xU+Pd661Ai(pw-TSZ)NDty(#;oFGF$0DC zzF^P&MjX`X>wl|>-E8@u{VQi8H7H5Sz-&g-_i$aqIMN<)KEoCDdPZ`1^7f^-`dsf$ zZ)y=Wn#sO2@%lcK(@DTBrq_5$f`u*XI^tzGwn&93nSKgrq(bDrSx^_Er)5m$isefZ-GeWT(Z0($x%Yr2_FqZma zKwiREy;gHWTu%64zz3|A&sMM}4{$#Tr#{U=E>Z+ty3YB*@v3wSWQ?kJMLQ0f&7O11 z9wZDuuhn~f7GCHloqF3E5E2cIMHAu$IyRt+N$fJNP=SvnE{jAKy$j*pt30o6I_NcS zPLyH`hJV0vuYYp+Ns;p&Kk2NruG z-hcP;+i39d2|Py9mkB*sgzua?+9d4Gz!z34@)azwzSnP)b6<3?LHgZ3lq~HMC23AP zV{U^Rx0c!XR@D5bMQo2f8zr-c>_(9@FyEdw|Z`qlBM| zDgF#RU8fy`xLGK&UNxK60DZ@97eU2!72^6}9t$&LhW-~i#f}Rwm2DNmAhHCsiS>r-Na5(Zo2#%Z=c9Ayq~!MH zu1EW)#5WA-?J@nscb;b!&Opp})gJ>q;S~Lt$dr%vSfqA^-=F#5yu=B*H7I2h&)FId zG!zN+OeU1w=lv8>t1XJc7Ju|r*y^k`b`sa_8&wTlZ3D6@&1wzujpu6?;MosJW-qkB zV?G8W0= zWfJxQJ;*=5nNjedKPzG=%%uQFo1<B#Qhqk3ImbgAgVmt)osqw5RpWMQ959Dhy;Oi=>0_SW(F?HodB zs1s!`n~nXGkEg=j$vf2LlYJL9wg1Roj9%GzvZEGDRW*FYu*?*u z9)_YnSEiDdy_H3wANbi`ky~X&_!|T~`1W~`$AcX+Ch8NJ9dShuA$GY+6G09-rME$u zAXU`{oVg;vpc zV$lYEaD9ELg>Z&|T8bPt?gN0gxzs%rh+ws4GL$aDvN0m&X z8x~Vz`!l&D*2geNX0G=P%9#7nD$7wS|EJWPZG7z)_0t`y)aQg1&n||J{6^2YR?<9d zX)Yf!sDE7H-WW9h({vFJC@QDwYqiW+&ykGTdEMZt>jn>i3YpNxIU!LPz$M=(l>Bzvc8 z56FhGl6^Z*J^O__Lk8!79uH%Pe$l?jzTdv2Eq}<)q-ppl`RI!`92|xlY^-lT0dJ35 z&j{p*2^*(aBrX(H1K{%0@*vlHeDw~oX{g4XMN#%@E|6GnYM}5)o+-wSaHji?tU`)5 zJwe%57-_P^0VWz_rH|j|i9af1LM;3xq2SxShcga|v4{_lMD~bvjFMF!h>yY*=L-!^ z5`RTF$2SZp_gwx9#GBag@k|;G#50ul?-zPVPHJ^Ee9{83$v!d<9_>(z)4ot1;`iB| zwBpy`Ejem=Jt0XM;y9zD@sHk=jM*HB(bOM&-gICGTkE zumpKgVRNqyNCCg3nD@ zZ8uj}$tFime-?}YG9CYlnpOLRiBH*?&Zp9;Ib9{#MyQKEG|S@Gr9uU`a|XjO+<%;8 z>E+Z@9nWOW_Ah0JeGhV&_5ezD>+xV+)DnA+&qWM!5DfBH45`UO7DsJW$N3Nq5-K_N z%bJUufbbL5ZltdD4U?mu$WbONfqY0_w!^!Pnf4&-QOZaeY}dQaQl1+8ZJS2;4}(AZ zxo8+C*U8HCYZ~L2%wfbpAD#i5+JCw~U_McVB-_TjqEgmN2RAS&j3LN56D#h-kA$m$ghiL25|qtz18o*M+J!6itFy&e4KIl09IGA7F@d`+;JNnbr> zfpov7hKkV1czdUAcN9LE5`Hf4jGkrsCBg?&BjQAg-%aaOUc2lCJy2)04u2BP5PhiS zx~>-T6C7fWJ^Ia^?Yj{+N*K1lz$0|oIn z@pP*%#V{e<>HH#seV?93?XdIn_rcQMdkU{tc2AXu>NT&PB0Rh#DgNv>1%t4?i5-@N zxf?WAcmR06^j)OAwLYK=UQOk-YPP(ZSDIdq8SbXw+ETxpX1cCdR)4L>)KMCCb2XtV z4skYiZ++b4_wsd&cG^zIt5#+YZ>`geixrh^Lpl_9)Jc=h#q_7h%9-(|0iR}+V6OAw zVE*je+o2C`Xkz3vI?>M>1@vD*%G8@K)oaNUwHNxTeYigE-xUbE&dr!%# z0`E+ktTq7OpG`_edw?}+gAlsKqZoUAoJCU~xgYGrOErf4~{|af2Uz+QrbY%k-B{UDl@o^p@ zy;|ry)e)*(C`@1v|MSH5xM3MH-_1ysYeEg$;-?8cf~xiwyni1fZDOoZLKp;x^#slC z@RA9Sm(7Wg=B)rZiuOWWMg1C|_Y}_&`*-c_l{!17NthfLY1nL^xrvL9KA&4F8q*eKms-bAA=lKs(Ep`L2yF&3Z z&~q$Sf6}8`3V%`yNS8kD)B~$)bXL;{zp-&?vgBTigRc^wu~1IsVqn)qSpRmwiIWZM zitj5e9BzcFXK1?H&%(MIx5<(sRRYoj&6)S;bFB-6TC?!X{7U^_6TTs6lTy?aEfF#6 zl_F?Q^Wk%au?|Xp3YssbA!6tk<3yu$Z}%spmQS-1C4Z{F)v5bAcw4M&3JIXxoMf}- z60Trx$q#8_vQ&sO@VRe1TR^QV*>0U_x%eP^Es`(%?Wu5Mp#c38X6RjjTY88(@`ZX| z#o#jKiK^tsi?SCKrMGhT$bomUVc*IPe8gVKlau!1U-j07-a+p1*1P$s?}%wrTt8Pn zf1k7)SAUM)XK&Vdrq_JU(*2dKB|#8%Ri+tSg>8`*g=Fbtla9S2wAhG!GsNMEcrj$h zApnto(NUEq;97ke83CuyMHz72KaJn$~3+^x108QqqDLWvhKEZ zxxSI2bdgShLxdmKc+(}eF(b1}luilTj0J-sJG-xxa=xx98o7^rso4BIj)RgW`qil6 z3sr*H71VF_ECYuF{jpKuaTfZy7;HoD4jgHHj|Z?a5AD|TAcz4}-MOc;lKDZ|xVG@i zGJjkCw>$GB`&4-{N$3KvZf%>MvhIwDbkf1~J_><)1ckV#U_ZD8up+xMXIA42h zA~18AEw~U{z7vHxWUDH8)aW7UsoANR@P8hf8(1F>7LdW4xba}w=6zdfrGb>=e!y=U zYjP_nn2?%f3`8-Th=l9aC&c6g+#iY;s=?rJDo^+K5TfBMnZW3M=a}P@eQwGZXFx?> zF_cQE<*CIoHJQW|HH*^{NvHA7qP^qfWnMR0E7fJ{51Nn2GV@w&m;05NB}`WMf!KcYDg~E`nakRd z+-2BOHFTX**gDRYAxf83f1B6qZxUl|y~3gxDaKci1WMWBWnC^1Me;HT=JsD6gB<*l zF;p~k(~$_2{f5I;8XrOw*vjXEFZ_59#=~xLGRcfpVtk9jY2q{O@C1eS%73t%LgY7` zTOx_Yu_km;H`g95Zlv>SM-9dCUYnr>&VGc?Z;L%Dlc+miuP?Yb@PT1QXh|q*T76S2 zLGQN2Ho1}(hf<;%?;u zXVdnfW91ws{LjJmu+AeqY=5yR6A7Y}3{HsI*O@O9!?3Wg0sH}8=;!(_-im~6h`j2B z(X0J0!}20&N=t^nEwphKisV&|#fr?XVi6sm%FnVYRdM zRwn3`PlveZWzF!*lNz`R4N&M1@_3h1Huw(9@_c>kfZxefgDb#6=zp`x5mZ`Bm`njv z_n?{4I!khdrhj*dl;EvI%lv4+e>dz!KI>nfOH)dBz3%qWTrHx6)b;TLxjcdy9f@xN z5%onBbGJ)3Xi}u~X6P799DLx#4ot5mE2foma=PHC`GIp035(Zg0eATB8Iw-Bmhp2L zYgco-x`AOwE{D{pAb)xJ(L}r=s^?lE5oacKTOD7;?aJ;rEe>*Uqf^eb-xo8_kEh){ zIEB4GH=wd+%;eH>v4I&cHF8Vl$G}g7r>GhuU*8`*c!e!(-EVqFi_TvpDON+&Fz|+e ziG=5MnJi)f>e(l_yte*N;jgMC!AW~44>=Y5toSh!41VLh0e{L=&Ae4GFUbf#>)wm- z%SD+k_J6t|U91!7ouWXG)1d(;1K4QFVUn^7Vmpx3L@Fqu&BYxHn;oMf~_{ zqhGP+J&trzheYKBt`1nlwFh=MWN#qF<-xkK4?gTB!s^WMte@~kR(|0LuwS35Jw=Eq zbJzO(QFR~l`+p}_#KNuT(moDRtILsT=~VN%f}>LfiFAzwL)Zd8N=-cGpY3)xe>AU5 z*IfchcbJU#3U75gSRgRAF$ z*9Jd24L@*xwGdD6l&SG;L^aJRS6uS?j_p=|gQqAzZuhkGrTN&ycSpg}qhK#@=GHH?A)S zd)`~~jepO-8H5~OKTA2AD=f@ojHPuSDbYZB9{nYSB#|(R>Dth;=Gl;JV)Lu-(a-G{ zjE=2xGzTF+!{8`G3D)eMtQjBH#bV}|(8;OEHBS^a-wiJ_-6>!tgwl~97>>%*gwo1XSgrSRB$3X} zU2@CmdEY$el%m~cj%X~iI+HKf&-v5S>XHO0>!K?Bfc!^#Gq0r6_hD4Dj4g8*(Zs9` z>U5};aHVPIqB4HS@@%Rywmt!gyphvzsGg|N$?oJuMk;t5au0f{uKrij>yKLoE{SGJ zmw!TX=f*Daz6za4c+L0Encvz#bP?8@H;r)Z?a;^9mz_SjE2VOW zzQgS#pps~7w9jv{pX36+GA5Po8foeeWq*w^!}`Uyr!)D?@^!!0^}`&ZiyQcO+&bF0 zT_w^S@f$-6NQe;b(z9iQC}HJp1<(>nPdw0#dCkTh85edmz=@r5tlrm@@QtHI%NB-A zF2M^DJ95XbM@|eK!(5(p-1#q6ca*N=E;8-q-M`jrcgww-(CVy2GO!^X*^r*&r+*Z? zM0N9)EqNfcy-Ujf^pwFr#*pN%eTG{8&Yo*b1q-S7YNpLFWyVqYc}F2LLkc&gma;%0 zcsRZL?b48>Jyx0&syF8dXD{bkIYKBKk!#um&gRz?9N(0D?q(Ua2GYsYYtFL3urGD0 zJQxKZ$M!TjMtLL$8VAq5-qX&+ntzbNXiSBmu5pP0?))qas=t4d&Bh^K-izsBv+Ch8 zmM)x&3=t{f4Zf@glMnMxR-9P}r$Hv>S=rFOwdFh7yH3)Pq~NDV-ei0hSKiqqNZbSQ z6=7J|_B_2aJAYz>g%Y9m zBf-a~T8q9~VPSJ>9VlKr?=29?X*Kd)U!dC$X})w`rj0K_5KKfil`;}oVw^l}b8nD# zm*==((hpfY?5M=L7!B;sCln5?r|ivFAPoU?FyW$$3s> zMfI^&rqoaIsT&VPJIrHZfk=F%BLvy+0F3P!;n=wW+%;pQ3+D;4;or;;e(osS{@%xX z8%WSbM=@`l-BTx~J15yznvwpQM~RG??B2up^${Q5X&(B)*I^twR)30~O^fY=l&O?a zyU{fic7O_@jYNuWacXX30xkbi=3a=D4>l&4U#&Mg;^^b8vYOpEOREI^rr$0lO=du| zJ^E;`;Wz8J3uhgUAjT8qy5Jx5@H{s)Yc^uyFmM;C2b*PvQ%v1%ys$DS)deTFD2WhQ2zGKk6%#N*H4!ZD6ipOERwL4%zT8q4%e zJ2~Z|1EjIqZAz{IIY?1pHe~w{CE1<s=N%XHjZx%oyNl{thVf)GiPZ8g3p%zfTJ<#;@Zth8_~{I zG1i~ckJi|-mVX+q=YI9`rDCZaN3&?F~AuxujRmCBIKv_73vpvq~gAmE}y- zMxMi=OBFM{%@}bGJdgF!CXy|hwIQLeK?@sZd^a>$G=G(FUNE19Nm520la_pG<~1&F zmE5bEfGb|@j LfiDp5Un~)qOq+!)VH5v|Yj<4Vg^w7gNtjpuN^>~{7LIJ}-s#8V zOEX}lQ4Oz6i8$gyvJ3T(tvvo$b_6fh8(ORl$eZfO_K=_K_U84tuuf6VY#^}Wv??|( zostFUeShC&#^f~KTM6uDAl#DK(wA&ckS02jC1X{ndURLyI^MPsx})CQ>~>bi$EhyM z8$_ZRl_i7g_^deP>%~>m?S#-%2K`u$_((5a74c2b9@mZR!RZ8prLGl=C}t5B)go za0tgwm-A&`BolpITByujavp!@r&+k^5E$|4wfPT1LB)gjgXT(t&pOh&W(SdB67I_a zTYsG^;B>?Z9>!sYjg*e^^p}_Go*GJDRmvBp=IgijH+5Q#GBH?C@A#1w9Lz>_phSeK z-QMP{CF{WUb&E`#)*){MGog%rwUaj!swy5dM_j&gs4j6D+gt)UeNH!0hF=r~T#gcj z-0Y-xR+g~6hegNyWZPlROJ^D}9zN%Gx__Ah2k_Wuc_}4pzl0*pq3A$lDurjqoWALmMJLy?;aY z8~Z>cT`-`mxb7MTiVP{KR?ufLjuN6mby@m@Uj8=@SFFnG6Vo75nQsIE9ZryCE+5jf`EOno#FDHu(sn3Li)cwmu4?59wG53J?Wb@9_T7NRL>@Y)w zHCMHEM!DqWdAIwVa2Vq=+eAOr){=@R~x zjC2_zIFe=ixFi>hFJZ5I@SJQ%361>r0?&nY3j(GvxJ#Zz6AD-lo%!6THrh6YyAv@K z{=DJl{&I9N4UfkMu3OQUvwuT>7cHf_?EYRxm{8G;u_7j8=2v z+bIAxze}LiFr}oUvb^XuqYh-KK z`A%k$Ol_T(1jN zZOn@q5lvH>BMF z`gj^4qh#$}_~m1FsBrHb5RyI@RX&btBUxcNm=T1}?RefMuIIw;q;UST*?usv9VO#U z$j!>;Fn~Ll23SHyrHC#9F!aT6sp#cV}gY@ zI+E(#=SOMOg@%f^_hRrAGrer5cs{%jBeb`(&upe=j=s4VnXYpGgyJnF+NW_l1A(?2 z+6WLKZ&MQ}K7TWd{FX7zDcb(6)e&7+Y7h<4`CG}ARziBI7mR-5^{axmqABucYa%80 z@Ewd>Cd7N7>u3I6NX|W2`bgb9MdSO5kn>^GZ?zC|Q$`H_`4NP zRt%-2HzJ0~YF<@0r1et$RaUIT({Z-%*BC^s&@UIi@z7vgsltf6dmrijATXl=L`1(_ z+j;~u-es5KFOll22H`-1;duCA#3t<8aVFf(bCEEolwYP=jeROV9T$8|lD=7L- zzkl}&a<(<&!G|L)GHz44I;{>vXPy0=skUbX0b5KVA2SfMJqlDlxtv}r$X0dbki@tL zFu3p#UZj=3Vyonk*H?c^kEhIHA0j^Fdd{kcY2{t8I;i?x6VZJZP!EeCLgCUfs(`VH36kh(NJOGht_n~~(1V0V z;sLm{tc(mqSXh4>45314c+! zZ>>8wDUSZh(=ri8Nq}^`|&dfEX47xPYEWv^#)x2M~Xt9bj#xYiR}OTbfy$TZv0k z8e5TYI4u4zEZSBGYkes|N7EFc3xGCKfWEaAg8GYWol|sWO|*qi(6MdXPRF)w+Z{V6 zw(X>2+fH|qj&0kvb2IM$a9{4*8e_lJ-nFZ0)?D8NFr&Q_DEm_fqLfblCQ}}hb3x98 z@^;qy8QlQ^KzI)D0FC5+M6@MAGwlo zN|y1Fxq=(4Xy#KE1y=Y~ZQAOqdD)&g?)CTfE6`p}9>pk*uz zgKbtOzCKj>&`31i+*B}f-`H=Y$E|~lnEqFj;V+44{18XyQu_d0XvoH)d>^U&-;)O9 zXqdo#!aPVxa8tlECIC#A&uG5iyWw}ojw)wJ91;sc6xe!#B`8*)6C^bvREGaO7zjx& zcxXHj@qI0@F9pDvOq)>PFWt3 z9bP7apdj&To3H_B+Mj*$E3h<90CRH(yNYVsm#vVdw8|*Q!H(Zd1pZZlB>n??3BUj( z>_~1?bTj}clc54XKo%#6Tv-}`7l8%ZW^#jcicwhxVA80tnF<`E0x-=xl%N3a zJ||Qm43B}bZE%3U@83vbrgaC3V)PwO6=Z*8AS-o_l=oq8n!S8C>f?7GDk3IOFV(vR z9Xaj+!cNIPS!2+F8qM#z%>RxBh!*jO+Hdse3K;u^L-am%@>;De1B)w|3X1j(m0y+>bEqhCE+4O*U6+z1R{fiOZpdFj-} zaTC`#mS}{`jKyCV`5=PIWr+5`$|Y3}XXj9Kg_DcxLtBHEa4rD$R4UK{fjyVzj^;4f z)+k=lY8s74sWDBirm-WE9$HcP&)GB8K5uKcjNkE(Y}tS+Z+@Ffwq|>Z(Z?$S?Fl3o zDjScaf7=H4DEj{bBnT0(jE?O1IasD;Mb(`w)HYU4fM;+@!oWU++{9wlJM=rud=Z+qi`%4vKR9k7J@L%L5r z$Ii=xZhY^W@sq)FS$gY7l8%csa((S$Sxc-|^GQB#ZH<$LV>c}n|5$YlO=k<)j5?|L z{>t6a`rh)x)gnQ$i8UH~Wks)W@W_x5`nTZ%O*FfgY0cp*hKw*iRtmdfcd`^^ z{d4Ne3j0x0WGTz`Fxu|)uS8;lZlph*_F17@a@8XGy+lR;moSUd(_BZ9&2=x!mtiaj zCap6|4zHd^QbM2mZz5L8fH~<6JVCN03a zWb%kne>J=eXQCl(4L5evwYTYRj~3tI9K}u?M(%>d+xOJY5zatYk?}>bD2Xseg!*kz zL1@>&T{;@E$Xrmj#yeEL5|*QVE&3!n9+Oja&;|E(u*F`hH7A&XWt4MXdYv5ou?gu&*hGl3|*atz8qCf}7e*D+JgZ__eQt9~>z)e2)R z+nr~x*?Bl|GAZcC#Ra1{ukR(b?;l%%b!yraMZ12lDGi2SWu}z|_%x1To0RasgGHK0 z>u%cdfN?d*-4Gs|V~}T|Hud2OG{?g)M=me6GIdbL#e~X!%?By3yK)oNWwM+R-k?bW zty z6mnT9GMZCcz%n@+m-Mvd$;9A{dcLSmPgb75m3uoX zy4CnB=p!nMMAS`NrdPT8J&dVAy*Kw4M)pbc$DFW!g$jGA%F9VapZB&Czvr6Ft-dtG zxXBG|L#p|P^Rs3`_$|g`r~61kxkLp~pqmw^HuW#t<74cdJUI{Dy*rmD;rF4RMgE@j zz{AbH%W4ODHLvm}T4*%ZWK4upt(<<`2&x9$2;<32sRSm+h zW&|yaMtY3^)*l*y!cIVnC9-3$Wwr~?z1~kwU;VyG+;XXSBID)ampG~h;j5A}*tLzmU&3*|vXxB>3QNAcQ1Km&_ za;r%QeSL_1t{3^kEZB96?eB+nFs?xLb?P>kl)9C8V{=zlc1k)`v>>9M9e?FHF-K26 zU4qNZM(y}e+7muvw^V>(>n-N8^4}iBQv7PvuY5iZDTUNp`J<_t{c}!UNLl^Nj2jfQ z$EKFQ`O?DIy?!y^q))}D<;BE~5Exc{^2Q3T=;u>dN;yh`TIf56Z?60EudF4x7*ZbY zktWIV(_LE(kdSc)qf2%E{Y4x7Gz3p#V;}!92>+T5L0wmw-LmMir>=8Q&$@+&y`w!t zGvi&2D|#Z83-|R>33;1$9`e^==)U$X)A_$J(LtZ};i@;J7@m_ZdyJfK1D6tKs5%)J z;)C0Fko9a$Af)}Ah&qG5hlJ$hWJIQ7o4H_j~g@Gm-$1!3;#a{uP& zb&9GYh=pvVl;#8UAmS!OtdoE}&|QDC%~%An~B z>%}{^<9!fQJmYB+G|^cN8uhC-WPO`M^l&Is!PnN}Xoh80VuoWbjcqf{E?vRaM%vM* z9n)kw6*Z}aoZIS_e{yS^{Y$1=pQlkHuQr`afN>&C$vXAGEmXsNh<2B-_svhoUVTvP z^hK?RuZ#MtqxM&iP&6=fIK$QfSzmV_bSu;4;otshUO z_1Z39MIo45LrPp-$DS#}M1E}W?@;X95S6S=(TcY4*55@3U5IVfzluU^^>mNL1Wa=5 ze=ZWfP!YA{5=bzVd2rVAp9e)c$N({7f{wtSC(Tmm8;iLby$llXfWPMR`w` zYgW^9#mBX1F!6Aiw06^;k+Zl0oAPJ_20LN*@u~q z?TxSh4GkXmIPcfB1gGLp7#7QPW==k424@iM#;128LhCXdm3a8HFB5;^Whto;bLx7M zhzt3^7$(Z!QA+(jV{4$5_6lGd>e#W{R8{J|LfXQj(JKIU$BeZ3xSoow!B~Ad`rscm zM=E}T+H7V`NUQnj;d4vZ*c6rtGS$?-YZ{0aNTyw3XxYCAc{yX*4vmD3t;(C4v7gTF z1pR^L5FbO<8*jEt%OH1p(lN!fank!t98o#glvuvHV|t*um|sJ<^FCY_lAqzBQ^x;J zgt3=jgoOhh0+I01skYiFvFve4QN{)>{sEI8X({d|l5#6{T%5dLsV}oVTPgz9LRpn+ zW712Gqsi4c2xPb;@Ql@Rv!5O60Jy19zUM8IpgsSAC*H)-?L?(* zM*FDj6)N0DmcyP)up^KdS=0s0(Kag&3UghB{MDrW#V z3xCf79m%~Sz=}kp83mic^lLR__6&MCQaG)2Vc> zX#yN)JjNybJ%P0;GIp+|YfnWza~|Fm-n0V+cDs(HC)x9G;j*{IPWZ&YCECj34Qfbq zT%qq(8Tr4F1+wbRXS|+>b>C@j6tWng``-5n!hQZNslxQ{U4JN@HJ zn%Y@p{&nXtUq9cPC&eil%ZsGEq@v<8vqn6LdypfvI~3S;3szn6M=H(6pDKIu{;|sg zgUYQFv!XE%&6d^7VcLBE8uHmrps;n-CTU=-4hDudWwGlX6s$QqZx|^!OPa$gK`>V? z>-WO`KwL4ZHp9i?C5#=4V>WL3} z4T--D)BiBAYi-v`ZA4$G5r}!_V2qar#&{)ni>>FBZF<7nGXGxe~Cbx8KajL zlPkG#&wMpdaLZxeWiA~-Q2x+AM(3=HJ)3B&S>qvW?k%o`Nq-yAKEvha_Kg*Clk)YY0vdh*bs5vN z)7TN07HF~6(sEBJH5SXKVy7`Ky1svvK>9sDtWK5c2sPOk$8Zrt5BY=g8EcMlGKz4_ zG%`ZYUk#Nvcze)`EH*Q{D6^T6a%bcTh&X>=ESJA=idv`^dOQXOFVP0UidPma`)F(D z7e+C-ajp!t+?Oazn`^Z|O{p-T=v>~*Xi-U$LD_tz?qUqb^xmWgNp3YP{ze#qaHnDVS2U(`GDFPnopxUXZXl%z|8)R3g5 z#d6=q*vdaGvPfnD0Y|ZhDeoRlDKGG;z~U1+uNdEinB*yy-+FYdui4hXc3UchVhbl9 zAKjLfZ8r_6fh8r2ps3QN}TmX zfcqY~92i$pGK(qwj?EK&1ZjNz`<=?v58gjqJwdht1(s7Mgo2fKSa{l=!r zVFCWXn9vFU!9lkv1VD9wzXCNXdk-4v+pmx5w)@ocHYPr10kbDa~fEgIy$D4sK5_tbsELeVV-1XLz5cp=P4bAD;Def87 zt6@XvXh zZnodu9Pqm{9)vfaNdmA74aODVhd6|99E3%=PH?Xg@HPQr>0d2`#5wJoh;q+Z%4(b( zP8N*+NoX7{)OTgW{eh0~3oPKXGKO#Z!o4OmHWs1}8!EI<2#II_2N??T&&CEIwbw43 zaX9paF_6f=iwDkaOXO~gVHvpkp4EYeR^MiYq6CS{1oKo1^Cmh9|?Eujjztp z9k|2c@2|HZQ~~oPEtFpO*|HL_4IlsvqXTZ6T8?@g-gP*i%s0JRjfwpD85A-7>8D5F z_aR$;5EE$f+xKA-0q_nHZtq^^ZnmJJG_VZ8T0%+5;(l^y_EuI3+x`a3^o~POe7Swd zz|r~WhR+Q|{%qh-3{S%BgD{O6to{)~3M}fs{W==>C`?Q2OiIF-#vZs8IC`Bj%x7I5 zIr~ERl1L{$&Sj6nKs$tUc@0B6F9Cl9Upe;QS$qV>JTtx-q?i)B$rAx6YXO*uy+~W% zUdgwl!{B(fU2V`U16wG8DFI)oW^Eo}L3?|EU%(avk}<;OZgP{0obSXCJ_1Sd^iM`72I$NtIoXRMgZEH zKZ8WU0qd_{LIvTH+gp-oeRdx}LNfpGCh_c!-j6O`C}9qupgw@}7%`m4@(pqy^4Ho2 z2=c-Cmp|0!wg8ba2m(+Loblgx1ug$wDIE0@GX|pXBZeFP_y8l(Y<~wqW;6VL0N*M= z6bSK-7@oiL2`PI2@Qiy){Oa`yg6!Mv_xB4UY4U^b?QM7aMMv)o=mqjICN%ewFRDda(-B^z&kF6{f|jZh9d_af;B8+*Ke z($2irV)kF1K{!Hu##}iV0igDw8-_A-0=1*UxQqPYXdg7j32D9is79L&ghY3J8H{*vz3QJR1z`6l$@#tGp>%kgqncD!VkJ z2tB?-W=QYi&J=Z3F|n=^7k0Uh^?hlaa?o;YfS`Uo&zaQ6G0mQY&VT=?U8cq|F`NiJ z(By9yQTwx@crC7}wW%$Jv=esR(?lJazXe#W7U;1qrbHoNa~K2uMR3-N+?ukD;umrb zVL&G>TPovr{>4risIXQ;s>J%o+D{`o2f`8;`J{4kCxw5m;1_0X8dwvpy6QzegdlEq z=q4+cpKvWLnC7s1LUD1y@yb1#Iwc!;uIkG7xYggjE{xLo4^;6pj38NuuS@V4@J}Q` zz$8d)X<7;}IG?gOq`*ttNj752DtB{pL@BRG1(ctT?XUo(stve+x<_;&Po@ndTm$8A^gO+Rl zL4Fy%J5lUIy+m5VRyZ*=KM2Yxz&+oUVV{`qyD4us)UB^Nrvcj9sG*Y)%C|Ym zo{Pr1cNJo9X4L7;fA5rFxxYJmAw{^406+(BUV8jpCWkoIpH;PK9EQgIM*~4j#_oTJ zza)(ExwvzuTB#<|@NJ@Gw@s9x5526DzWmh`JYhT+ZCc_#V?Yarh`x|YRtGPr^G;Yq z+uU@RY+>*e@S_)ARwKG-nrj?Ou9KOa%VyxdJb{kFcTJvT$kV5ccFYYk@UZ}r^yLkVc3p&R2E~pVswkq>!Ha1!OXuN`} zL!1|(qJ$(2?U@gVH`j$PaAb~9_*@j}^T?%E6Ghr{XXj+gO^x&G|h zYWx^8j6&%0i-~gFvGT)Gsy(~+PnbR68&0$)6*|LDJ6C-81e$B=4lU(fn1r|YM1_(y zmySB<4+*lO%mbP2F2mxmEa2 zlpNC~zN7~JIYhc0>xU~NK0H=Z1cy02J8OzX=8{&?7Q?xMZVEJLYfm+yRH>OrtSfVv z|GpCX*u#6V2D|J|-zQ*%lvTb3ZXL~tP~M`V?eJ1>b^C}=rw)PZB6xQ-S))-Zn0+WNeU(^1!mCclm78 zuUCKKxTk~VQMo^}M6WxOl~TxN8wxHeg*c`X10$3agbJD;Pk;Fx#W^_7t9+Nmj9$cS{n9-D**QVek zklV&+_@~JOL4e;om;A+xX)9KNQfReRY|Bo%Qo{sNWK|Wz@&2U;(ZGux)Oq}W{n@Y+^DO&`ISuvObT%npW5p`OoycN+{{AOAe z@5%^_(huG{!!<*_9Od35m0 zT9P>8uEij_9J%DhP}D=`2pzx8$Ni7EtaLl#u}3`_fFd*9t#9p=xs-o4Wx3lGZRkjb z=xSca%ccSl;bx4Z4n?g9acWn3a^0ftjH)06QNeG6&3vOCM%0WXi&L59IrA3?iAd@M z*=laBLs2YNvh9iuD0=Z#Q$((+iw4$jBG`_szr0#z;ioKlET+oi584E(3)MMmND}A@ zIg<|7`0YG;5q{pfjq-vy)|_ppjbb_<%BRFJ)S>Rc0u&WV3Qsw)($mdC*EtUD^Ib5) z7EL5h1+^IMr`XY7?!W!-s#elJ|HW4;R$n`trqR3}WEruFTm2Ctmz!%~@^fu{#c|i| z>Z_cf+ZfrE@Hx;L4PJ@;&8e!h;QT0%AGCN9_!?}>^7jADPf?ts!uv|$bGfUFMTK3#gy@f^*fqAuQv5%qw@&V(D{+Xco5qAhs=&ByGv?6bQK=0t__e6Wi*g*vJdJmFE! zb>eylrMqzRr!X&vABnOWGfC|eVnCY-2s`+o$!Pbst$SU(o@a2WJjiD2IZ^LC*Y*4u zuuODynvK?5^?hsd@l6S1k&gTo7KBbr zCfy&4vIC@w>@w=y=QK2984r9XWxP__(=gJ9a+!J2D0paMf4}$E{T%%GGqStrsx-ob z=$g4cWZBtpm+#h7PG@?-%m~R^=oE00nin~Y8(HAf1NjK?K~z?iK}M0GpQQu@-bhyn z%R_(6yp+i!C6vg6Hv4xH$fv1l% z5Yxfr@4+&Xgkzx`@NN~*H&I!mO$4UhMA9QY87?~D1-dhQ*3&67H6>N-^cm45ScPPr zRKCh)`!uPAp5B=~2kr&&!7%E1;tx&i7R=Wa{=}|%)YfXWtI@u%I4>Ol>Z}){wu#C5 zJog^zkj?uu-=QiusEBus)sVEAR;mq6>9O5R)4h;3hZ5GS4|KD>lZY=QW)rN8AGl=Q zPs*B0wF(>b=`MX49$5*aN4Ed=r!Pb}`#!UPX}El_ec+{fkZkLM&s^l|ZDonw(X%d4 zZ3=QF6*R41v{oqK?Jw*Bb0u2u%6QVcnxm;B*vNB42!m9(s{7{KVUq+@6@#w32*RFy zG9LwuOh+jgneA#?@brH#MTw)gB549OD^7_uwRM%mp%?5HU6aL#yM_}S=-NlC8Qi1saBgjYH^k&?~r31 z?~I*ep&5i8<0?(yn^cCV+_cij3uVrqsXM0CdSGr61SvMS7;xQH^Sd(P0!H~)FBgiD z@_q1K*NzaL3TK*BpAu~-fkW29`Ua%5E{^8F)Fcs{ncMZ+MJFTq$CXko8Qm5`1C2Yi z3zfKhl{D{&b)VjNDI78rQ4|6Kl%`Mo4Ak0a98VX`;pk!_kR-;uz!5n7^dP$sNLv1< z4(5&GZjK9!57FS850XUh(J)JbRD9k-V-Hs1*Fi>~y|uS!d>|h03^B95+Kv+SXEWhW zpVU%`^F7wOqS~)LG*vk+3oC@vKg2bjUBGVPiN<#NlDzmjWD8upbA~rG@2xT&_Yj4L z;G`htnhrPyY`pD$eX=kk&FJ)Qd%#*czx=l!bXJ+hbCSJ3n;{z=O(?JG9XdlH4wS7i zn=~+y2?@n$ib6$CHve+EDATl_iF=V9#lE!Mh)%p*mf#h8)h=q^xiJa%8Y6RG3Dc+p zw4kteiCJeml68eR)drMNGVIIb;-E@nbVnU{L?nG&%bpzE-6G* zSbN7#aGIoK$tRyg;XhX#@4KHrh`+Q!9dgGW(pRx~izvT@)n#LowY?gUP87x3NCip8Oh3O0v6zHqoP}b2uZEAPJy2Lk<7~wzj%$etz*N4_JbYg zAAJ>|9eg^NMdDGt6E!Gpqf$KGD`L_7-qY8Cj1@n42dxYXHe%l%saMB7<@P*`Cyk7 zh+Gsg}tf*{|HF%EL|L#F}}EtWS1p#it?lS z#QFN>h+eEigiqeAc6&-6=MT9+EQpp*Akvcpq39ifm2CE7^_I8A`+~6ME1BCCV)3U7 zf2o=Ys(}sqeCbfVU7xPqOO;n&;pMF%cDUYiqV0_G*WCS9{Mb&O-X+M2j@t zh%QHJ}#!XtpV)0LRr!jlE!i-ZK")hyyKsq1gih-ClDIIWxCMe!``i2Iw$hW?zmTA6j$HY`<;Mj6BL?7j7UBo#M(P(cG5$ z_Kqp9+^08B2Gwa>?{&sU5b|h(+M}Pj%{KL>X{n5F$&nRVH+@PzF9Cj8bC$ll6)f9j zCo1onfqXRtcEvB!oQJv*h<1trz+Cd$(bPn*&wz-fyTwo_k}+%xw*mqWMYblwv;Nh- zc~iRc5ZKP4Vyxk87rW^n_n~7aa$>Qe^I94wHJ&fO^Wh<+{%PsAaM#t!OLZF5gROzl zXF@wm16L`tPGr^{D-``8CYEjh0$vp*+Kp1ZVSzClZ#yRmSzK?&yAcXcK-2i){6e=a zt4$YCRBub1A;s_}s)CHa)EY}}ab_LUY%kU!C5H18{q20RDxl6ZH!N+=F|Wf^mzDU+ z{Zz)OVONYncw(F9e_qR8`Hz$Qq?f83>#>Gj#ocEJ>Kb*->T|4eLV(VD8Rg~pvv`fK zgLuuU_wZK|9Y5th9^x2yfR|w|H+N^c);NZS>yL2?$--mRI7p$*kyrDW`I8f7rA)Vj z5WdnC6TI05*7J;zT0Kd$wFsbPlQm{4Nq2?1KY!?VVs+I#Y!)~WXP8fy(z}xwj0&+$`$DZtSF7uD_G9o)aT?$B}n&fSSLHA3os_jce?8 zmR?APOD`^~k2O@{6KD&X6sZ@a6is4II8m0>1O&yRP2u*+_wd;p28Add7iiWkm`Xv5 z&M~a%#VZv`2bs8RBgc;^jdIUa;!;=++9FQ6zuFiQOO<2&DtcpQJ4;PJ3g98J3TVCb zUlt_S4E zaqer6c@=6UtCH+C(Kz_sf3t574_`)jr*6$K-VqpB4QCQ`wG*%Ea%gqXFA@{*zj4_K za@P_iVLn~4gmM|g@=!)NF3BKo58`olR01sM>WD0iBFlyuK(jRa8crEkWiS69i*R1z ztHY1A_EdX+575O;jT|lV zC|y?(oX^yBK!JqV)GrB;JJfoO2zy2m$c+oqE?3@d2hR+x`mj@V;mT!xL=MqNVJAY3VFm*#H>CE9V!DTreEHQZ)ojDSgJ{-yYCrw|93Q-bD|sg69)Vp#)D z>L~F#7i{fRjVq2xt7YDtTX@|K!;%L3BC{Huc1LRK@?$s^#rco+j$hw>;$}dYDj-)r7Ppk_`poa{jgNp!tTV1hjv3UH(7%`Z$ zu|^;X`eBGzJ>%ZCPIU)*$bHUeq-=-XST>E*zDG*llJU9~zY+DU&2aRg8vk&$Bv4I~ zlfTTsRv*1AUyGP4qIR)(H&L_7yq2H)3vB>kMyr<&3zsHMa>2_*&RVjtE8g9EJ#V~+2L&V&gie| zXIv*--DcQpdr<9I&dcFgwx~ryi9CHd`-98J|>UU>MaUUPF zu6HZnfq(Ex8uO{`It;c(y~(f*^D3+Qu)00Gz`xtHX`_5u%;WcM1GlB%`I*PbjnuB} zZ!U`};GaIKT<{%o5=qXC(PQw8irKHp1bI<3UOp7YkEl{?U8I~6DyQklXovd3Ee4nr zSDgJRMLMPRa#68_ZgNc_I>QJ9ksMMPK~=n`xmWO_kKCO7<_%+XFgFzO??XH+xDE`R zKtZA;NS1BCYvWaUA&I=MMx8!{iKY}|*c?wKs}cCh3)bz&JsY^75I9Uza>40YPPqFI zXt0mHzG|VicB#k8pja@Pub7V0gD^>9i7{xproWWOr(wceu)Zihs{#>`3_C6oy*QMh zE|Qh}5Aytn_}X0~`A>JB>xB`GOu4kUz$kSg4(;U9x!iv(8NR29@M_AI{1N^r^E*F* zM?f8w^3w1bUU#I?HgZ*_R2C*^688(2W}TrwX=S3;g0I|o#EYS93!+)7ARRUA$OSZ= zlUja9Z*|Q36R6}yFQKNtbh>uWi9cj+>sNC<1PBqkis8B5Vjo zO9A=u^Xw`FG^?s^zL7dLLe55v=B=GgpJG~@yFb1a;hX}R+oeu}wp#xH6PO2Qs@{q3 zYghrK$`r6TARH4iA0@F%T2?e4n9*AFOL!&qr2f;Izd56zOr@hKtmWq7PrltrhJUxH zs34jN2Q!Pmap|nh+a$%!B*X2gJe6}Z`z)M7@cD_>LiS{-oM&Av?ga{)*OmBEJj0nE z{+^Z@x;L?1_IHRZx-`yT8mK|5fEyRde?1F@&IW6G%l-$;z9ghUpum zedfA<#h;Gx3RiyV!d``^GOjfR<92?7RIRdY?pl*z?x_~@@GpVKPi{xVvGolq%GgJo zZ>-zFvfmM1Mk{jg8-;E|J#d39=)uB28KV9^F6n{Kr52gF#N2yNV=N}CL7-6a?CMs_ z&tvT*Y)YqKnt#Jg_r1}5N&81%DI&R0Q(!)NHG#?U_w98{@9W*?ch^@2Y`%V3{ByYP z2ElZ(dNjoMzG_X1=PzY{zA}-LoZk#i!0NFC86}2Af;o*gI(h{w(;nO1$wXRp6oeVt zYIvGy{rYdvBYqgCf*+7wQ9onMx7gKF#h0Oe3XbPhyqT2*%mK~(iKsG%0_1hni`TkJ z7o6|uZQ2_s##^mgb=1XsZ66uPkN@E5U{;gcxy>RBac)Vm^|U>5&P|NlSk(2z3O&7L zS0A^{Mm5-ss4ldL$CxrCxKb9$QCF_bnhd>bWK8~^{oGKY;RViGX>6Up zVpTSn9=iWFoCBKk`5HivbsI0rkIV+u#~CmLM35QT&e^bvtlZVtk1ZzUAQ)iAPnb<@ z)R;=$PBI=;5?#8t&L5R^4M?7&E+m|;nYLa}`7p0DQ?yQGg9tD{V=iZoW5kc=Ob3&m z+;nqr?=@W=)&@=4dnu~Ck^BJ%y^jlL@Q=HeFR2fRBn7@T>ZED@)c7P(E(0YGy4_|a zoEF4thwy)ktnX_0-_;QtraXF7!yu|pX2 zU0k{y{svIS8kI;^{cHeHaSFPv)rt*2#xB7LKJ*}$cKB5}E`8DtJO;5_o;B`gMB|+7 zOs`A*AWFnJvWCBF2fvVnH%Iz+2m`G5hK^HFUx^s>P0{Tyo%&I!e4rjp>fShsR#vK$ zl?6@luAWZYqq=UvJGG}_Uejb~=P63nNIHC`Uz%3V>TJ2#nSi_ex(GMT z;`V*gttgqX!yV+rhQxDe++<%Axv~yBdY^homwemI2>a9hUNI^${Eupr$jK=Oj7lZ249@7qZNqm{8#WXPbeY z$gEVI#`RNTit#N%0grv*0m@tZv_0Pq=V{L9cnC6^=?P*{F z!%)ElYvWKm<(!z*flr9BGhJHbRR1m*nSwax_k8XCb59G;XGZB+*6~Q<;sL2c@J#gV zU%Lleojeyd7XORDP?h`JMUTl&$>_bFRdrup(}AsQzUCb7%)D2Zb84B`FUE5dwH_*i zFkEJmcm#;)jcM~nzaSp7krS#7Qw0*7!el=tf;gQ03PJ%3fU(wJ(skB&SE{n0HAW0N z?l`?Ij)M0;`(b#SJ-X6*dE%Fbx-Lwc z9*G}4py?LHFoPwzQhG*TkV@3OSRbI&*>rAykgM#_M5(BIX|m8m&r>9oO94#v@uy_G zCYn<41Mpb0<-lLOFj62K4h|pB*IaIxjoICLO-Qwh(hKbruB~*l)RWm!$`m@-okcj^ z491pMX*}ZSV-BgyMOnEhfbujs?j3H%*$4kn0Hr2TU*B;{P8+F;Y4wV(TK?S*8#x_Y z+N#7=dKI1aTA7~xBr%RRq5+gg1p8;*>g*Ao=ofOHe&e`}ef(gj^32Hk8y>hN0_37) zR!?aZlYC4!ob{;XTX>4piaH0EXU=YNX3D=0Gx(*TvnH1YSD!w1OU2?^&yS3 zXLbmpyui!#*?~#w`Z!|?)B1tp1AHTAYGzaWL8-e+xl)vnl#Qnb* zWSM@zrfkJ+VXJ?VO{^o_kk#@rj>!1zPqc1X44DWiB;C-_G~SnhacKEtLsgNN z`YTE!H*>MoI}X$vZc0IUlu#2%rH+?5cd8oH*WH7Wc5=*%iOpyhX8~nb;OcjI#OMhO z+@?6}AHNp+Y#LYG{E~}|n%+#iR6Zf)ULLA;tH646h4lGXAb?J6_xissOLo@(x-6-j ze_+9Zv9YtaiU5Cn#C%u(wO=B!v;LncjG2{{EsdB33jGH&8!Ok({{rMZ%~Z4WTInzC z#bkbcyTaV*3Gf0tZ31=`tJ-)%b}yCl+d4aW&=@Yf&)+6ryd}hMO&N2h)}1eqe-kOG zn;lA${c7;01o4iHcfDRf5`@x?g5JC&oFeFiy(*rXujDBVHsWt=^t2r z*?@0qt!sds?J5lqz~jxSqNCIMoHsNvd{#M8XrUq%TwI=q*uS(j`N7n}2{z0^!vu;Z zba^FC3t%56Fa&L4Yhj1<9|t)VwDS+m46eWtlva}x(TWMZ=?2ziRtA9$p9s{2mzUc} z&VUVwp)HUD1m(Q^lS4CK^E6!ZKY09Lz5EMaJHHh2p85n%U{Fp;PPs=>=wyMHAbp^} zz___|KCIpxmZ`Q9Kt6F-y(`*Lhc6w#0L{fwQDBUyN#6rl7*g2?OFBFfIMe^g$nPpc zYvIo`JOXj;2XqBp1^q(VvvzotFO4F<&I1K<{2+2LgK2Vy_>@Wn|JZBtF1_VD*|@wl z=-Z6=^`bKOnD@({73rDLjxHwW>u{8ob`0!1y82wt|8eNCpI(_Xmq!5eb>j3|%kc%Rhj#C0@!GQ4Gj#dY12h?WteMpR3d#a@+o{BNH>Na3 z-3g!v0Gw%czF{zvz{l~?&ssSlQ6+I@VYwWkPd$%EIGB8Qw{vVgUfoaeuX0KfhAG%> z^F#2u>pHOXEioD+2MUOWMsJCW=<6_k$4d8HT|xO=*)N$Tjz=PQ@2f96&ejG_)~~-^ z8I@p3z|iiLLRv-fcY%T}IjAqYMnDH39Yjz9F#UHv@kF7s*ZRf8{Kdqtw0~(0WFNr9 z+2RWEs+|G0#R#=IIb<*BAC*Kqz4Qj;{&WrL`}2dTk;T;$^YyKc=)Ic3!~p^H`rX7& z;x@15D<1H$B~=O>y&8&v(KaLz9uXV=&TMv*i>4an490jmVxIi3`19|nDwo7KYAQS z4U&fP92F5Xs59*&MdnSRxOWS!|HlyE!>T37&RpA0aszeS?IZ}K06O#ljNPcd?! z7=FhWc}A}h%3}!;E3G#yfEJRnZ+T>788zTV53&jm58#mME|mqs_X+c(Z@?1K$x{L3 zXIsZJ=(vzP6p$k+2eJ>m0rHdiv+)pu$rB_;5D5PTBl$AL`G6)1&f|cP0P^3jpQwFM*13CQ|7^I!g|%Qx=GLk6^Kc zAs9-6!4tAu@hBU-kKh2+y~(Cm&Q}yNR1t(Q1Ci9vd`dEK%J)s+5QA#DIMW6?D<9P2 zvZC+UnF#z407ZjN$Xm&b#u37Xfdw(cFJcR8Sn=c@JXgV{zo91t!4ZfX@L1(0EY$k9 zHC@}2c$(H+wJ+R>Ia$YM%(Y_dL6^VNib^Nj6x7+pXFTY~e2J`8l*2I!`}c(!c5iwk zq8;qBSn-%V(u*?a2}C9Eb;c2BC$)#9&iJPtKLIIvI4`?yTo^_$r7X^WFL$%@ni%`` zjuGwp8T1HYsgE}Unz^ECo3zX8ek6pFpv8s|-{|2WA1xy3AU6mN*J+cDhnjIAnkh>C zw>Tn*sC$p8HngCw_+`EAMH1+fCd5be+28Mv1x$|zOdc0HD(ougIJX8Ux^8nV@lde= zV*-QAZiElQN?b!FDxWY)cy^vDsnw4?<}N6G+Pyfq%oxpm8y0D>M-@Dan7v5w?RZL_ z{Blz_sz{b4dES*5>edU4|0QKG-VthcKljV&1muc3>RN+S7Mt^|sge~z*{6dVccH2( zjHv=G-QutNV%7On$~p_ss+wYm*h+)1g?351L{->_NcoNK0T(j9cSU)qRag1mkWN+> zx_82!dcQ~owmRbn|X;`Y*g0v{ZvUjS7!qOs+trteq4Wa5a#c!t){UV`1}-{GB_*c%nD z5M6#DN-{0%f#TZ(rX$|OZ5|UDg+V8zx6lLkbT)&fPv0rpjnG+XXM?~y z9%H97y`lLKx6tSRX5d&*9zjDLPNM=psQzC+ zcQ?BBam1s=E((STpCNu9AyaUuO(HB?U%i0Ew~2MA!}IjZXzqFw*C*1?OOk4qBcyDZ z#J9tXwknImT7b=_wH2nMx-310Bxz_@v#tLvcertbn$$Kb?m~R|3^!pf>|4QBKGSXc zvQ*2YS^)&`XM#Uf_WV^6L{vMW$9uEipDNmrLN~&hHD+Z-Vy%L<)m{V*!xfJVGD})c z2f`>SCAX32$iqJj|0-&JRekvHa2R7eK1(-2(h1OCQzW?8$iu!8yDt2zDd*q%9{^uK zpugKEI<0uSEnb56tD+bB+Ty7q;k;W$Qn>AcM(GNThq7HEV!?mhQfT(mbr+4KZa<|r zrzSy%NoFs8++d31Fj3#shtxA4LaVmEfs+n=^u^|Ns#EJ2MSU)4(Nmj@MUdmSX352 zFVK>u9N^G@aO4%c*KpPGYcnm$j+Dn9W+`^$Lzx^bJYIh>`wiuc)Y!xMO7~D%0z2w} z_(M`V&q~#ED>P@w$Dg4vk({5VTCJ}#2ZvXw5%w9`=wKD?#)+@eWP zi%4Y%rM;3x3bW{7pa6rQr-eLr(6^qKFbr&g1SA4fHdmhf+3G z{`D25_*eJ(og6zKWC*%*v9^y~C9?_iS-PPsGO4duF*5tD`Sed1N%Tkd&uyEup@uU2 z25^6ZWO^6_RKM(zjN!*+N4wTHm}!L)cuzc;*!xS*WT}HgvV2A--Nm%k!P&~j&v>KX z>RvFG7%*=-#WQ}>ZXux7d{7v<3*zM>tiH9zw~V`0H@FT+j;@jEyxySjfk+t2MMxsI zVruq6o_FVZP)btVxePKRhQQ26KuH9`np8u_4$tEFs3qPO%8&U zfSU8FY_jm*#H-L1p+1NeIj^2mh_14$jlx#-2=NG@@){@R1UXeY8&)#k3t57f%!q&Y z`8TA_+iFFFC52XB2YwmZW~JWT+k%u-)!>EPWJja;aZ9+S`;fz>+0BHTl(am^u{~sM zC)bsZ2K@-bx~ueM#9ZZDJ8vj#Vz_34kJIOfGmWoZ2JnLVsy2iCa69`2aEG?(%&pr8 zQzQv`RD#rPW)!_}6V$=gJX3)pJllU?o`t>&c29$bt@4k%Pc{(uD24gNwC z8*b9G`yjEXA-RnH#LAJ;TKoWIqxw^BYp{T@HA*i5yQA9aLgdm{<3~o|^(0k#Y~=Q1 zbg^ff5>Ad~`is;YnH#>~3L^UBiHW3N>dBrBYkcCdi6R5)^Vh{`B;kf>Ezy4hxF>gP z#YSI{sx(gGg%lO6U`P~WS6j804s)#Xr3E}vi(Z34xS81Lx`uf(+>8h*io|fK z=uw%MVEFu>%p3w8ZkyV=HL^i%X;quL+R!25_)?q5*t+Ln4r22>T>@r1tDmpf%kO@t zD|;^l@&Pu|a-T=K@+fNE)pM$)SBQz)PBpgYnjOFOvlE* z+eJ@vE_V~;3-z*NjpG#|-=Y)-BheM^HgMAKzly4!Je2><58Tz?qchJHmg;r-g?X^f+dd zN#V+BQ}9g&2y@cHUO&_GTg76kI5$=%Hx+Xn(3OOKHsaW30_#?zSmYIVSdi=tG-OC+=YsWO6ftW;nj3=Ui)v$!{BX60Bkw0%80Q&HvuIoupRBfO6AQm^ zp7iF`B0DD_Duwy9wmr!=jT6NJd(l*DfD)qgn_Cn1E$DWYckYFK?MZ~AKB)VG+8h^5 zl{3!9My7OY<}-gMAbUo!*!BYpe9NyO#qawS##BWyQrigaiDruOvO(o6@;jf?BsrzQM#PX9!BE%1| zrwxh`jqz>LkNq-1OQ(gG}B zUR_uwl|mZ$#&ug4W&RMJT&N()3wxArq`beOZp0ko{n(AN_O;F-B6l8QR-M4IKOM`w z(SD=hE{Qjd(X?wOwk*PFz^J9*KJ}Cn%d!&L|1y6C(O()pLfPZ<@mhP2WC){ll8~?y zxB$cg+p%FwSFidwN*6(Z-{m}K^A2L`h$5OXiRfmx`Y4wY#nxAb(vtvZ!4dSAwFoov zk%z1#jWEQ=?CgR~lpKUMV;&h3r?FaJ8_kKM(sO8*k9wFhB#Jhw&9|1ai{ETiQxP(3 z;Mjl9@9%5+g~9_C_@AYex-Q33ebpPL5VC~dyt{{>)2Pe0B*bs9t(J~S+h`ZWs75N$ zi>)wxrY58lCtR$b18cH3occUEc}V@3I0u_Nhlk}7 z+Vo%e4s^7*w{NGxxX@~37cSkr6yg&R5W!ax&H;Uk)K|MmMldRmK@_0yuAYPfJ42Yqu5oi zBAM!qH-7H?(a{{V8X`qR?N12R7^x^p!5r^Q{1aV#V>ucYC~fz7Vo+3vLe4ADm+Z&4l7X6;N!a`|f3kncebafP8gg_9GrK)Q=QKH%qJ6~Xpf&n0spd7V zkt1}=AG`P9A?Nj{R2&G%nS!Nkp8Wv%PxiUsV?<p(Qx!zz&_FeC}@#G@W;v`fkW)lb%lWR6kKem%%dxFv_>fe>nu0 zrpTqQvziklYGbd!s+3Zq37XSFO7A126qo`?%I`jWuz`pSrZ9?-EE`6otqDAPqYh(3 zJ%?mvziUU7J#{0`FM<+ONuPh?-PH}T+u`g0q7IFWYc%+TQNFPS(tVKmzUyFU*Lco? zin!Sn6Y#KJGu~%f^AxiTQ8$(+x7)0wAdgz^Ifg9gAIT4GNtWg`dd+I~d9`k~+9oJ; z=ZEF;(@ik?p@u0@gEZ3CXywKwYZC97#sdtmBo*9JtUk>hG{y^e+J}FNdv@{jL|v^G zzFQMY*n|^Yt+p=ZCJ}eJ9)!v$X>k91Xp&R}CMUanN!2(RxC|Qz=N3v%rHW+UUCefB{=g+t%t?XT!2%&*RxNkeRW&zp4=H6vBFX$vS=3mf!A z{PMF3qlG>N^{knb)2&anA1ZX+eo2}HCSWgPDpEu8#) znRY!iC`x|Ry2;a=A%}sf-}?mr>?FB(MOgd}aVi%p)kI9r0b);nAS%>5sO|$P`v7Dph2{LRb*&FTOC9OPvkk z#grvDR7F7%GVd6*9+7~#4>|37fL|43`? zeTB41zhoK6t$s;I_P?9xy^H6-O-7A%C|7#nGkyYyqc10Bbv}KbY-RC#ZeX8dTk=G` z?j+0Qrz3x`I&0KXenbP&^dl2#0@}wyLCN#yB3F#MD6xEk2c_JLH{I zN)l57RRU7ki~xc33E5}g%k^P#{8F5u3sPZIMUsO3bf4Hblb$>|xlHdUD!GtWRgmQ) zYpFGQF9Ypng?eJZ6X*^n@#zw>tV>^R+rXrXF%a$5?%-S67!1cYf1~}Up3n5_U(pg7 zMS*{PMX+F!TZ~w5RN?fj-^`ZGF2M^9S8F8UpmDkIF!BtV6O=32=ojEVI&${A&_uAX zEg$Jm7K?YzDf&b^2XI@YWHP6;49lV!gY&n{N?xKR8SB9Q9{nuX`hWZ~u!nkF?2ta} zGX_S)>LI+25dp%WqEZ#av@q&9_P`v29+-bUGn{&I{Pa0b+it3@&-unEZjR*~rY*yy z)NtQSD|2I1PwKh;TV&QWI7Znyby1}u*Bc?CH;$Xa97Vxz`al_Nri4p2^6SVak8h+$ zHK5{(fM4g6l_;8Lbx4aTt6Yftg4{?`XLWe}R_pxJU21ouJuss~(j|qUL{CH-$~=Ex z6%;EKx^E6WViK6+8ZB9;`RNCxxta!b^ ze%o1S{rOumrf&25)>e?zb;@l5%S8En-sz5@l!tp;5g81jwN%I=`m?sGRV|7syhoqG z-ggsJ6h9|TsA!G37^=mcr|B&NFmiv)iZZ$NF}%-qHguxIKG443QK2MO=D+nNDm1+2 zOyYpmfewG*^#(4E@mrV;=IUvbM`=w*_XP2vIO{L_{??kK(1ni$0V z{c?+_LIKx}<%Pt_F|QY(r^HSV>645b6x)B5vJo4M zvL#)a#Y*!^67$D=d2XlTTnSu7H{+ou@3u}p;vGA=8;Aun*Ng)+h|}$z?18%77<=eJBU4sC*2RzO<5r( zd5Cx~!Z6A1s#cK~A?~*lGI?pX5N*K9qZbGK_05N@+#(XObMLuhy|aI-7;pxon>|L- z8pk}Y*IbFpp3>MjfDNwtuVcEt*3a7<-c)hy;d%sTcrNyj%FVdxPEVPE6!cC#y9tZ_ zdvNvR%hlV- zK+=?*`V@Va=w?V;k1T)c?%WUmv{ZDtN5*u8@UPFAttDfZS%~K_ZY9R8h7XO3TRMR~ zieET8i~JqXqdE|WAt-(d&z(>43QFKI9%BSS7Jh&02cSdX5@-F*7lVEw z`D5pJ`V6;k?o2;EBcb$silNOV^P=U8>%!;#fH?JNWo$CLe^k`BjOx1}sh&|)&lB$9 zHC*lVVBYte!d!->So$UNl&4R-%xW824JeQ2;yG!&i8_7vd(1dQA|s zEEZ9y6GRg>5Z!;2&96`b`goI9N^dY0-rYH<$F&J%`QqH=EAu%q{w*eWgj+nX!?jVZ9XGgOO;iO@UaS<$BmTtT@wYg@}bh0J9Jh>9J9VCMV4wLhe7^we48_704Q0gG~67NZ-*ASD6 zd!jbEgTgo^3QwU*HD%)AK7XuN_;*91Ntz9|+VOw9=#>#zl1u}&G*ZoPoEa(dVH_X- zxXkfhFm1FSbc-X{AC*7~W~h&{h=>q=(n9I&=%175SJd~nJt4sTXl=&DqI;yVP`k`M z9$AbCG_}(*!q!)rp|7hZpJHLXCa?VR6p$-ooq`E53Tdm%j;R{}g~#lpF)H%c#u7Jn zVx)g*51wRUM_>r0A6$wlrXzf0?6PU_%kW+$MHvGepd zr?hh>i3g3@V3l4%#mQ7=e^#=Nj$EmfUiJOrhoI}u&wgJ1#iAH?R>8J2)jb)c_|TvV ze-BHm|K|1T+Z*5!KfzNqULmB60I!v0q}+c(p_6auBYVL!I7w$yij#mlkMiKtIGE** zyJWJ2-6j$VY`?m2CJw+Yqo-BwMx8yNK`C>m3$#)deO}O@aoZ?wISbm zo)8gACNlK8y!aG9j1Sh6d?g)14AuwNQ{Q4Kc42S{Xw%rIH7V z!Er;py&MZNfG)P<`un&1e0<%Hked%S{N6}hR&m~A)ii1w=T3~=^s5x|!SU?l=Tomp z`Fd;u)HuQ_dXN3d=O?cF+(HQIra3Urq+4qy?lftw{o~H$R1=aBZoO_?Yy^K)_~0L? zo|=@2@{c8$;y3zx4$FRk85g-JYWSRlFKf|?{kb zvp;bh=m$4YY-Hi{bU70Qv~ASC5<9D3AFRI8Uz*`N@v54$QK|m-EIcg9?h>VERH!+HM9!I#=c7Tn3w z5NmA;KimdRN)aW!7t%hblB4~YR7Z*yn%5WRReuLxqI0Hst;!}lhHztqY30Eid`1j~ z)L}@O(Xk7mu{Rh@BX%RnDJ#X_3j!|0OC`Ueg4r)fP+sx6x)dvV!tr%Xeag{ zei}8lYbFz~Elq;~3nqVumb1onj)^vP>Rr43k+)i3mqhvueec5SOgTdk3oC#U@ba>zH<4#RXpm@y~%!_myM3il$LrMHGnUV4GRARU5%FTn&KN_E##>C-k zpPp_p-JzCakR(2g$W)VuaZ|CP?ZMVam^Wt#FA4V;7Q?9C77QO*&vrn4wiFeK$qlFL zwtA$Efblx{>aKt0PAq4X5v*&H=s}mdZfA@EfXMhl-#PeQ)nK4Zeu(jfSvf_&kfm@E z|K})D0`0ku5IhEDyPC4Bh;Uj<404g7RzI=)*Kd;Ygx?)WgZpURt2|s!#wJr zy)wB7%bH8_gYxamZHmhlyS{CGTV#cl9qA zTkb;@pKK>OR3l(=(I9Bj-q`MY7CXSp8@^h&&uzQ>K<%mAf&1LQ5)fs2DnrK-LTp0R zSb<(o{E~mPUocSNKE@Uy4}?b3w8CHrJK)2eaQU3ofr26Q^+Ux|+r>n-l7=b@0V*MT zRJj<1=V;L&B@4PGJisn?xT?g%97Z?npvOPv#>rY=bLri z#v5PtNKtOl6yLVAyEJZMOoJE-Ja?#)fJHxN1ncXUqnr*+RB9HM(hk*d-fk#~f0VO8 zNA`HzJbW}U!Q{!Q$|ItcHoyY&jS+L7*MKRt`(|twNVA|3cDb3d3ZGP&x%OC^&olWA z>$ratIWkTx7woRgX_)MPwc($dR zX=T2f5_)Ux>lW(_9tnca<>b>{!sD-kFNMS(ew=VZxDu4ikz^F)<^-9aG@80ADqc~kve2RaN46$}^#lF@`STSp6Up>9X@+FdI8l+TQb8MTbo`fLwCwi z6xXH3zcTXe{QcDaviasA9Z)I<-`8L4Zg9(I<4Ap}H&6y^P|1>Ap&tzS8MgaZs#Sk^ zg=q#XD4Dbha&rZ_3bNX>$19B6~FYW1; zCjYsxQ%`8#OE@afM9GCb7%S(?F^`+BJx7p!+E1@n-EcPHdW17}E_|ct+U$RL*QQ)N z`rv}S<1R)ibEyM;iC3MK_|sN@xAkvH(#0M(b7Zi!7oy*7?n>_pkCn8LcFOmMazg>h z6A}lXa#1|2q$|bQAAS%oJmdP3U$G7>WH@3fx{* zo_kwUFB))Ef-`9Mh-rprEq(bz7&X7*NeXTLmCa6a6N!Eg>--D0S$UggSl~H=pV|qj9c$V!fh@qDe^#MlZ0AtXDI6Tku?kWJJO&F7g)G2ljt-lzPVmVJe6kS{zVB zbfrO-f{HZOfxB1=CUAM=#Y7rr!IEKOa^)~`^<5)w=K#|56i9!BH8I9i{bgdX20y*X zsyKE9CJ@;`-FBLNdMW$xQ(gcjf#e)3x7gbz>sdh-`dqs`^7v`5z6`ST?aP7@aiMX| z;&*h{uX}Inij;rQww@S?vmISx&Bpyq!e5XS*6{OfS(MZn>PJGgW=hYNR^YIt{Vb|E z;nclG47tb5sXRLqoEvYX8#CR`QO52Tg>pAU4h$q*IytiAW9c%5*7YB|ahkg`s#9)6 z0=pwlS42Sy$w-)WgpEHu2MB{6A^_0PU4CY@Gs>A54r6~EZ{Ru975R@MJg2oPiPi-I z5Dz@7IOvv|2GB^XIFn056`%mItx8b}6+s$2? zJJz2Aws19hBgz=i*UGrCCYELudR0SMw&{64)m3;x>tb!@mE%D?cwTbiKXkibzT}$x zNOQ&~yPSW*8{Eql9|}(^F!L}{(hXMK`4EU8T~;YrW!`$`xtZ}4Wt?^{#@b{A3UMy$ z09dd|-)2ki6LyAvvBH-;l$C1@vKJ`_J1pp%7gea)m9H=6vLnNa8wj?VFGElM(i}B1 z*d1S4XzWK=%C`R&A;`L^-W12;&UGhXUwN_*EV_T~{iaKmYfkhHkDO#bT_1jQNKmH& zTtTT`J)nvUL!I->YW-)V_Mk4f-Q1@nT17$gvt>590ithaib4aBf!5dch%U5iL1yb( zzda%F#N!IO1rLxsjPwoYKnblH+w!sCHiq$I-qU?0l(~Sc4_Ayz6o~j!>;VB1dF<@L zW$J%@w$YfLv%7HcFMb$ScQwtfFYpUFgoX8P&N1H^a^vnBl~ps&V9nT_u++^yomC#N zo3A$cotY4a1v^@=dTV{W+XP5Ekfp9WB7hxh9swEkS}dQD#RY?zk(nPHH$kd2h(zH& zrh${Sn28%~pp6?71g}{7yCe4#D^DP>AD^c!>agJ`w8#@ zACKB^g{&7>qh}lpFE3Ra=z2xq6bXp4WqLwKomMmuUzg4*MTi#CS${?*2u&#dAD?03 znYw`Adg8}EJ&vx~<^1M%pS6SGosoa9tx86XBsQOMLS8=Y+6eWA_65)Q(Vqw5S81(} zOYd&D5FX8QY4jag$soo$-UMSwORAe))f|g8yWT^gLPM(v;)Do)RxT$w!T1qA%3;#D zb}O)u=OIoY%jZ;~U6{hZE1REni456AYIp}416jgIeazBU6zw*>#HI!6I+6oY%R5#34yfmdJh_5>A2Lh^ zw(y&Xo&p%8c)%4USBVMr!=QgDewAVSi^bFjX+e;t;woZf~@2A>|P2ah`-fN5!wnz=C-y>#_< z3#f*3&yKbuQ0=uBx-)-4an+Mlg~;kf49mchmjJ7o$-4q+k!J8NYA|x2YmW;u;>m!x zxidEc-Dwr1x*flBwL-p`d#yFI?2?xd*q| zZ5X+xkHE3|McZP5rnc#Q>o9t@oL9O00jbV?ncpokw^e6YPd|U7cI@yocdTPePd3@C zWu&id@991XEhsu)0mue~&Uuu9y?pb`)a2g)KA?nH0*5DqD9-pp#nVrd0&(oP^;t`MbuGnteF%%J zxF-Gf0n}sjyrofT;XewQ8GFZ~(rVHwnD8UyHGEHxVeNkj!(qS%wKS&MrNle^gn_0E zEPNKn$eUKQvsFZllQmC#Y8-8~!0Xj-2z(v7Tw638vi{-a9@|pqQi+O7vH7&yVBneFRId`Nt3rJglQ%9-;*uSWqiEUxO%;gEo3XE(m8CsTxAL2*Y(j z+j_KqBNmm7(jl}GzP=Q*x>sqLF zaU*XGix5xRWAcQ8W0wu(8+fR#$%<%G>D+BuV2E2At}UMiu_xFvdeNoGZt4okQW!d4 zsq}xn$*FX!s2t+?lV^jkCw^u^Z+m(_wC~Q33I%cT7#eY1;6k!BtdqZ@DsC^Ff|RR_ zss+IscFElp#M02!pJ+2+OxSc8nukytJ1x)%h?P-~e>$!Tbk)jruvdC(F|Lc5aUT1h zB9_l&{nqc4$eb`Z%M-q^hy)oN4!TwNZJvJ_BJ8XYq`$ftuBMcfv*}80E9;B_XS?zFaMvI0~Oe&Mx0C*na+XE;1?0$p7mTe5`MP z0qI+y*E0=w>AjtqE+(1C$T=zm!(>JVXB3jsB5wuU?-mhp{nH)5$d_jNY z^Zub%jT`d4!b!r;{-d{%scCLm9hPz~>G;0}y6^SZT4&nB%%x`O^3$@9k z)tX746G)_XBV@QL*YX@}@C7zvUOPt(y~VM^@_Fiu+{GBCKEjiXZo5;WTv#*bqGuxC zcnGV5e&cZ(=hR3qvOzvjjjG=#Fl%bpi zQ_RL|LaMUsUA=2ca2SZBP*^3>@S*~SMY8l4M5r#ftjGWqHZroLQH7*n7GzkAh z2y=laduM=jB!t#g7mEtX@13x;-_1lf6oj}rO@`PUO%fMR*A5v=0_6*acS3QoK&)$a zH>FgcC`Br36!)Gpczo7!Qx^t%I?#V%fGI?^CcY$U zso&cg%ltgapzL^s4s`n91bhE1Qx{11U_F(nUwWgF(d-aWuNACy)s)5cBh)!QUy`;L zVpSuqMh3gUg;WfaqVfZM4|bItpZY^YL2AUZLf_>05m0?Jv`D73m%k_svYxd5bSLhp z4Wy?L@xcXdZ9iA?wPAny&ytRx==qc$6f+zk9DmT-j9>CJTz8yAA^L>guFFACKgCtf z`|Y6DEa5Qyl#Rj~AH)WELzw%~wGs}{YI!Mc!NC%{vhs26+aQfr5DL2yq5;dKj0-p zEaVK7j!k{P8~LqPP;gBumhqE{?T6$C*rs&U|WU;jKbTwSmlh=$=wx6_F z?JlAuEOVwzTIPTKKWQNb6t;Xj0Gj`dra~3lIpZ8o(xlW8fW?`5+&)4WlSX(2A9I>v z)lNOnd-Sj>26rFMXfZhp>qSQS+T)bHaDS#!+P`M$kyuY8SsO23Y*=v~Q}KNvPp!Rz zp}6(nB*;5EFSjoZu0I8QHZquF(HlT(cxQ_HWdhP^_Nsq+C6?D;Z88@o+Y)>L?OL&6hs@VF3y|P&9a!$9qjH%yVG)jiGd(J*0je@513*x7R zqCI(1(XM|7OHZ*rP+w(drvwZ2gmnduSn5X@AQB^@z#M~Nin+;P3m(Rgat0<$F2h5` z#9;j8wwJ=}AqjsVRt62vuY8e7@EYMJ>OEaScd@nkdtO12Le?)~k7-11Yl>9(v1H z>LN>4kSXkn^LP?cbRcZ<9u6twPT?|b(#4ixIr%!td(f@Mt22F^k!;muLd9wbCzf6V2v@a!+9e`Nfn9XG4RLq_iEFod_1pg1?pd6K#adiU| z0yR08z(@!cw}W5?P&xxNHZhmLNC*@VH#sm0FHB`_XLM*XATlsGmmo3-7X&dmF*B1f znJ0g=du3Q0&9*KQ+}&YtcXxMpcLsL`_uwu8f+o1T6WrY)!3nOxJ;){BclOzG_TT%= zGu>0~(pvRab=OP}C8>%!qo{?G8Bof}5yZ&K#KH$qP*ihrFm>c+R0CSM+nc%q*qB&Y zIN&KM#a)4>AR8w~2~!Y|55Ntw1}K|@-c5hsHCR}9;VA*qKu4hKyU+q)<_%B;f=o5M zoq?cTDo$=7Ml(~lcQMe>%El2$`)(rcv!8-S^!1wf8TkqMyWX0cJpJQ+rE*lO;d{r~}YcmsC>+NUJGps;Ga{ zGQB%icXxJna{ZrN#ML!4r5OMcqDmT)0H78FKw48>8E#AusvIhR`;Lo4{6l~0a zj&8s|Mp90H3mx7|`EK-%gZ?+M_diM4| zX6oqf=JPML`S)&{J2|@9xPjdM_6P)6+SmjCWbgK8%xoP0!W2c7WThn4H5e7%iRZ|u z==5G4M<$RL=r8R*{zN4d_y9aCTmV*H4gkwLNhKXE#GM=*-m`Xt|5H8*oA)|_oLs$` z{|~S29GyHJeg7|RY2#>N`KN#K7Vgf>nvOOu?m$_I|IvPj;QxtP0YLy30MG>h^fI?* z{uAymw)}xv|G@8M@b`6gat2tM+PeY$Z7hNBCwN~sQx6~jxE|AyZ)`G@F#C_wYqM5TS7r4~+(_TB&spe27ivyv0&oe(tt zf9BbL#FBEiw^uTC0Mh(tN&i#N)WOEy``UeHiOB{!){4GfZ6F^+wU%%?ceA3|5|@=0GQouy#CpKj|#GO z1^!DAmUqO{>7Oom0L(r>*S~>(FO15ch2byGv;4DC|FdHL)m8_&I@tlWZ7kle7XPB6 zXbN(*@zQ5`CoJnb{{H&MC&PaWK>5$P_Al0AVoqMZj2t}d07f=mHUKLp*ZYB$jl=)n zY|Z~(y#AUj??Zq3kM^IH0{{ei0nOo;zdM=phuVH_4lfIkESM>WqU2>dt;816kxTlp zoH^4$fGd%^O$HP$3~mj|qAGM!kl`~7NDX!@)}ai=vVYxZOR1W^u}~G+F%3`*AV8KB z9sjDur1>#RaVe<0i;VV2?rXko3CCR4x1?{x0L}4Zao&H9?#DQ`sW-H%G%|zoZ)121bTX)!}3U3&W$)zK-8QVBtfWt)pcAA&9Y zeqMA}9U_13rK(7dHMOw%yB$A)c6d(*1bFk|azE^Kx^vlq*(NPG68lB$Kae!Zv9C+i z=nFpJvkO3kGG>EKA}}! z%qjUL7ZR#z1hsRneZ+~|#8$|elfDIX0hBrDiIL@DK@7t(hQd^<8v?c+S;fkFSq~ls zm&t#x(9rQ36s=;so*R4WQ0OU1u7>n97ub390u|yMC|?0u1q?};8K@G07;5-MnB5`@ zn;1dtfnw*chy~hQ&on#Kp8;s58K^mKb*kD2cexTE8$9UyV-ViL2aQbE9T&xBs%T3S zDcEj?L7?^*4%hiU%5S5dPg zBVsRuNDuQ^!DyQh)j)oPOHF2%9|rsC6hXS1vh|CBBnSUt8o~eWfhh`Rc+Fl$pvm@kcE|sZuwd37QvMd-v|E2Bh zTfI)%r;-m_Zc?y{8#ng%zXzXmOeU#Uf&>sU*hTdo%8Dy2hB5Kj>mBP1XThT3 zP)mtU=y)6O9WW>f0*n;ND>&hl>=A!zYp;~6Q(I*A`>dFwd&5T+tqqSLQ3k;q-4h5A z^(G?n&s0Q!f`?M=uacDq)cswvO`lcy{g=3lJKxl+>(I5SZmi=;Ru__$pzd_IvD!XMH|p*Jo>e7%^dpvj8b%TDWf~r6kUG={nuO~ z3VARlqN~1=MslBgKV+cafzy9h1ehLdb(Y^Ef$Q%PRu&OOnV>jbH+y zg4;R%WI(a*t~AaC#}-jSMw8s4TMv)pqky-gl*GQJ8OC@M)@7X|J=A{#z{8x7$5XjY zQkg3Rm!(h#zd_6{GJ)JddzD#Fr6F+XST<4Gcz~RaXX!doFnF|p_ESz19|3b9+_tF1 z6rW5h1R2b!PU5k}hUW8{k)uz@-7+8PwLb&u@E)jFrrB)guASyi z%%&CSoxN?zyYM8bM+fjR!^9YjxSbJ_Q4@>SrVEXmju5vEs}MLSA&LIyab%Lnv>3 z+4deeKGbT5{5C!4mBS%(4u+*>9RkUhD(famwzrGK0XC{NDHFU!4q4ZM6Xf8HitH@e z#zGZ{e4KxE2-spv!k|03?_U=`t5~P$g8bklT*FKC@TB(4*m4KCgJq}_5}ki@q_0@3_(t${-?P=lzxK?Rd8bL8 z#njXZ&b`iIGm+#enN|C@q!D`DNPD`0unW%k4!Elw&iKN=6C(}NU?CgY~*g`)OwMreabg4Xm7 zMg)42y}Bwarnyie7F|47@R3p35NQ|kJ_8N7HdZUBHwBHuv`*pO+5OtmhU&$BB06F* zrvB@DB%+{ut#>bLYmfs+=XQ9Fmz3hyZpD8faW-+W1oS)0p3Kc4^Wj#g0iLR^=pB*x zcBjTOpUZl}qz^I%aB!vVa$8adjBMyjTz%$P%$~u-1Rw z$s<$KCb23f`A|5>eioBR_yT_edG?J#EpjArpPn+FY9~D@8nPj)nh#=d zvj(&H$P&JkQcz2d>&S%4Q9m{Ij_qk!xee^6JOW0&-BWbXe0b0s{*ZS_{a&v?dB5gS zYMI$`vfCwEw|AV;Nt-yl?Pz=8-4W}Gtd_DxKTCvgldjcf>BwwrHJh$0hTS_d6w94J=c9wbxT zxA`Vm)RXOQIFY#K;+bL+r!jvo%##G-r*wAgc%@mJ!p=rWp=iWaT@M_LW+tU zM)ZTLni!i4M?7Qs2uE=N`hk=CLNR2vxU}F-=v

    VhZWSb>^!GX=E{KP1x@B)R}2# z8k`R4a^0bp=W>Rd@AKoC;xAm$dq{4hVA|ML-px{@>T|MQ2ZhSKMy^ht%?$nJgmG8c z67lsY$+*jFs)Z{q=%LnU6aVCYmF)gBz(=WrF&<@B67n^@K>r5N&z%{|DS`;KCb|K3 z`yj#$p(yZq63teGs?c(<%4D2t;@08a=S3sq>hy=E2xWF zvy%8{;C6rtjsrNf2A}!_Hi!HYKA!T)k8q4n?rn{Td?g>c3e@nsz6}O{AT+y@gs3hm za}y-as!|MqO?JECNd~%;w~*Gi^$a-d)b;O!tLziRuumlZUb5$<8Sy{ zubhotldbf+M|_pubO$#4OHKzupG1032mxJAX52dP6r&?Ro^gOLT&x#%UP0lPlYdvx zm7zPDU1wqUx_fo-xZ#eU@yRU*yJ{iY!LuR(j7+?x2cOp>V}Ru; zJd=fAZth`_Om@y8LtRRdik*XXO!G z$Cpn&8-Rz+1aV%S$mq74G73Tg{!di$(Qj^%P2s|F#RB><&$#G$n`LqhI_r6nXM_a; zlQnOe0k5VO@#qCpk-*@ zsrp>*A2adnnVc7YDqE*TGx^rwsaj#2V;o>@AaPq$N!Wv8-%g{^E(?#|RD&7=k69^R zu}7UTgE1VOkCn0Tc;+^;Tz!hz8`a&Cky|QLzry6@wYr#J#A_{5f~SC`U{NH zve65LQ4W!<(%Q=2wW=1c5H}O{OeTz|BfbY@Tq<@J_|{J78LL|%(ck+?4aPU_Hsm<{ zdn`jU3q}fm%&XSQgGKmqTNV`9BKi}D3%I!7&1=@OXGaJ=wSge-q(7%HCsQXQmM;hr z$efZ#`d=>4{P83*%o#;; zmU|Dqz)2)Z#oq~9y~!7kwk^pr;X+*UHk{souH9UAzM1(bU;L2jOjkQ>NBzlup|=-a zT8h1ZaXrdtT2x(a7Q0Dz{JtvSk#_;{=XBl54ocQQK!?lJ_SR>x%C~^=PPMRaMdqAq zl^p_q?BZPXU`MVoe)qSBT5h|o12+_lDNm<{%&O_KXA`E4Z>6@~uohC~xIaiZD@Ngv z!+dIK_lH%z^+j)aOrnZ3uv z6-(ItFU7E^0D>hM!2P#3NscKxKH)f6y20KaF`qdlh71o`1gS0?h^|;2GS-BvjJq^{ zUtbYGv+}ji!6U95?%Y}q8=?5%Rsb+cHsvk;yOm?IRyI%Y;*KUAti$vt?2ymW^3Sn= z;G0f`L9W=({_-bNK2^3IClQK4E)@&o$6rn;ca9=Ba>wL?6+bHNj;V(Xog`d*MwO!* z{Jw^7sg1XCwGeVlK&wv0901n_i`XGS`xsz)Gfs@xHer`u8Q1bz<`h46nwi#lwDfScuTr*%;i(QhAP{&$W2y@JuusYUcx|2Y zH8#Kd`f)yZoF^LVZ5h$-BaNc1J6;?&+^T46_~RCeqm?U18yk;}tCD^eM$GK#{9+#4 z+Hd#HPG)rlqHzXGD(~;j$+?QfaWxlWH9z@-{7_OvmA8Ue?z4dj?m|$1Owdt&y5{i@ zt_6#)3VPL|mMs)OqIpYkZX$%LFd)eaL_OVA0rn>!Zc8S;uV!1UhdpkjcBa8pvoIQq zW@Ub)N|9?92{b&Fu#~92Fus*G<#D~IoHYzW=vH#-4MqAEJ4$t8dbz z?9YYXuyqfi1&nQ*F?PtI)xbV=d^jlr_8q7E4q(c2%U`wMd2WI~JFrEy>+~cjQA`Nf z5GRkyHuoEGz`9hBhkeeh5knlGX}8Sb@^iWrU21|gPzo)eeKs2?-OCh0F5 zH2Z&{d>rWWh^&9RAIi7DV&NnLi5Q;q<`QS);tFsybwqp!GGV~_k$lT8`-9)LA~zag z!)>#*_v4GF4i_0}8a)SCHR7f=1ygCsN)om{1g2iwK>lbweEHM z=TXL>>RpIPd8X;c+}4I!>*==0>g-y~&PRoc!`@rgZ<)fr9ujTKC50l?K$*3hs!D#OA> z7>u>{F#~FHhB$?npN7`HUlMcKz(v}CB)&~o%ho;2@=oV+9Xw#{5DJQyZw&T}Gl=^4()0Y5j+bx~LE&U})I5+pw-@g2kF~taz zidlJx!;u)Mk?llaWnO{mML^>{7E{_xjJ!|jT097Ufa!O%+1B0JS-`SSQY%)}$UgPE zYN=8?6JgDId=1LR=<1n;7&7Di!rzW3 znK@d2ssmH6`+UD;fprrBK`F_tUg)4}ma?%nLe^ps*Up>(X`YF(e;ukxnmByt986%);1egve3ySt|a*1vJ4z??yPG@H%x?pRX3ePH!q^Q=dnC?6;{Y{&9xKUzTXJ9#G zJz4oyeXowe*$-;&xsHT~Y(tBOAm9B}H)0+L(-8!#3#iCub)8;A%~oog<7@f=**g7y z4S_WpU?y5N(9P;IJy9?$b$s)|<|tF9B%BUis)_P4rDcVZUcTa-!8A~p{U?Ph>Vb;K zhS(P)NYZ%PPNWID=WUxjh;*XFn2_M-uDqwgXFQAA4KhlDF=eWb>38V1T*uldmX>) zu?rTs(XCL4XeJr$XK!F|eLz&VpT6Pkh!@us3_=Mg0Vsa?TIw1nKURX$MBOOTGxn=D zROZ<+W0j$r`wp7}_*uAL8Mn-lzy7d%s)igD0o7=BTnxJMqnjd+9Q2i3c*&k>lV(>Bm-h&bKeMrB!H$PZTKx;qyt#{Ka9^TlE zV*Ny$yK)2WrB4}=B|wTjRdFk@ySPJHuiC+(`IF?L=lN$}o!?G{{!Xxwmxg)_R6d%| z8Wi*$VX<_qfd~Y(uJo;*q6NBtG4uvLLud@wL9-s~c0<6JCOzP%At*+-YpoYy0bxyS zr+&{v+7sj3wwAN$#NdrS&%S<{Sc>Mi=4U8G3+fzBI-N}%ODh#*9WPR?U!L3?x|SK} zbUxhMP;_4+WkXNhTQ1mR?W}{w2DQ)>Vym>{>tqxLc`a7-v?-3 z{CFd=do}0YBL9e8Xh429B;?+-?BAgZ8z3DXG%aB2EHCE}FAVd)9QN#{fL}kZP*m%Tx zMc}>akG#YUa;m=IBGzMB@p9DtB8Ki1E4Gg3umvH{Vtl3;(7eh+SwUhCb(?SJ#rKq& z#+1VI%#TX`b)?G+J`bouDBb*{R|HXL-#TIOM`)G`CCuJ`nqexD>tP1T!iA3xtM`c@ z2Hc#qDQ_#~)KyT#%}&HHlB{|pbb_>~Yn(zV%iML}dau(g>+m&1{^M`p=|q(jcFG}Q zQC-Z8{db)Txhr3S)wDw9LYu+)nI$jx#@!M7d$SQcZw%GU-)(J#jg%i}JEF|Fnd0&- z)<6c{&Uq7mqu0qk6cu+ye2#^`djz7Kneh`&+`A*f1n->oSaBXDY`#^NfVDod~Ld6nA6{vtc z-8T1%u_r&mu5FvzN5xd_dzC`r@U5r8qX~r%fH$$ zk#2G4#BFS>6cxOi?xc*cs>fn2VF4d+vjq>(%-Qu%*BfZKB@=Q*f8hn3RH#XbwfKcV zv7HWUglhOnO!_Cof|~T0d4*L4;1>OH+{>qQYf=%zyqbSBgbw6#|6_BS6{b=D9R?O0 z+L>K{4gH*CLTJF>zx`tKso2-x_lLSY+%5nL-_Uyrj)c+|T=(z3gNP@n@TRgnL&tc4GZTFm#Lt&ypZust6SIY=trzw}yu+l!!73Kv2WJ(3 zE`dqE_VX=fcyIk*QSpySvz8o?v0D8rA}s>*PK2OgrAR9?Oi0Y@D^wGk#W1gWtTI!a zhtr02Y2v7uWRVK~kxS)vZR#w(nwt2Dr(vvV|Xi#E=~^QISN8a9hQsT%B^}HQ(;sTKS?zy6hM< zfe=1M_LBPC-Iq6I3bpiBqvt#MpAaSFJ(CM9!!~b~9Mg{60cTW>q-T*JWYi6ywhZ@z zuv{X_HY^V1O*P<6UCV+||NJ*_xVS)yC4hh7^N-8zTLR6%6Wao&&?~*F8mnc0JZs|< zcdh5O9PbGSlSu4OL!}Wfg}PCq2dir0x$LAs@Jcim^xY#BKr^%-IX(eLQ zDsJWXY4Ic6b|%;88~qdw1R0c4TvQfuvzMt|GnvYVFS5_sQJ4d{jN{blUtrWql^Bm! zmdU!RS!c;V<9XPBSE*sl!clL3!lVq^SltOdTq$R!d%{5aF(ge=iGm8oHwvF?q_6q2 zZANS(S5XEAb>61H-Jv^B@xn*(r$6L=*6$G@tZKP=rJNB6QC%9FRZ3~xlzuBalvF72 zil+GsVd=ACI1B-Fx6@W*U*{0oH&#q28!gA$a=14pUNtI02&fwVK{E1x0oUMfex4sQ zqvR;QJ47Le0+ftKggPdJ6 z65)5RWjzUSR<~N7k*W{Xf`0PA&2aIs%&xgZOl>)WwN<83wG1tPothLh$si_5K4wJc zz7aVF1-iVj3TGrL(V`LJ$cZ&3sm{itO5f#heh@Q8ui%X%_#{$E(IM8m%g5XlnpgVs zxzS6odNgaepp>bB{U8LV@&{w7_SIQznMCNwj1!_!vCh_ZKoFYOZ|PKTrR4V7657~# zGQ7gX_S5i^`(QDD|DRfCH4aEIq7L&8o+sNgiP&2eEJ< z%}`1&#ZC{0ddgg7DIWXvXfprBkI2YDr>9VU;_LD;;i)ZuKQB)5>?QL0Mby&G52oiw z^+_R?VKDf99^#K0z+XHwKE=0=J?@efPz^X5?5CSf32WFTRpCKDnrw7&`x^SSybHfJ zq$e*N5l`dj=iN*dUkUj`sByIPuQThUlLi_yG4Ma>&{Q`O?Omqlb@;XcM}ni(W2Vp^ zPQ{A!NUzj?^kUa@Jeby_MbDHBMJ}uTc~K%lth+^Ho-I{f!@ibrcBx@jF?y2Xhod0A zu8?MIuc z7j=hM#c(I=Jqb`X44A7cfEOfC2%`bs;G7t^UNB96!cQHm5&#w!?n-#tZ5QyHbG05y|2`20J|6w^x|rrN+_beUO~>pnkB zRfT;-(NW(_lJF-~YGdC=3{`{Bw6Q+UcEN-~gA(nO9USGn6qP@&G_ou^!ooMiP*j_$ zAtc6sW%p+V!@i}?9@e;?<@;_qUivWTNWD-0+%v?s^gGA>eP6w{V*rgkS7C-3DfoGW z9XfA|C~>@UE-2EA$`&u?z(to^zl?(n2l$FOR8S)MTHl)vlumO2i}i3jW0e!@YF?Hx zRbwd%1`g*wx}M`Ru?thNW%He2!E+#94K*KsN<))5FK#R6bKYI|k>-=+dtqLs=+BaS z44a1$8c;6>j)z2$#x5&eQiuA;G|Rjom^C09!6GM|x5=-S)%NSpA-H*nT<3q0=D-+) zh(qD5C4of^U1lnP?-M6F8!xd&V(#_Skh2#vs5o470Qr-AoRKZ2h<4c(-%5vFLf~?L z4E=pxd8>~7c!T@~_RWjfeGq!{=aV_g0jaBDfdB z>nXWxGtOh+Cfnel8!aYtgPYdM##&wL3*J5s4yi@47=wjWlkhgkj_|Fe^CE zo0s}pmo?dD=4(V*n#q*;XVi~5`oCW{?c|APO;2-`WB^Gy=$vw|^L}#)*wMuV&3Q9A zM7FH(&h7S%lW3uMd(}ROqJBqzLPJ9$!s?H%>nQVjCHZ6Wnl2EcIl|9pv@F<*yGI)V z3@a&{bUlyNK1dywfFv){on;yvVFm4HdmSqv6X(rA?@*&Wk7$k_XnJ@$fCq%Rn~U@K zv@0y#@2Dw}JArzO{N`}Vj|GjW$;nldSD^_ba!=!QPn=5J&H7L$!t7>$R)1`~i8ax$ zyvUzmKLG~QncDsk;(deBWim8ISshCyX^RHq$Fhbj(zjH6t{BE?r0Yo4?EIMe<6P(f zWN2aXC`DGO>X_r{Zx7_f?xs%CgP32^MNf8f;5@>Yp|FE5m_apior+H57`@Q_ViYHa4bn%-CS^Fr_#_F|biLG}y} zRoBNJcB_HVttP3S@}QL1kgT)s-}~_?z<<%X93j9Pk`<_rj&dKsaoa zCUzxOG|0Soo_sD`%a@Kn} zz(se|1!bnXvODd@mF5~rMTi(aMd&=Mp2KB!3Yoi58)f?XN#M^EaaiSM%s z?A5R598f3Ij9+tq41MZjUvWiM%%)H>ndG

    Ex*IapzXhZ&~(;8*i~E^mqQ1>ICYP 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[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

    +0Gj9(4c~G$wZeoT@i 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