From d0d1465a89fd36aa686ddc0b8e9550ab4dac41de Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Tue, 17 Dec 2024 07:04:16 +0100 Subject: [PATCH] update first week --- doc/pub/week1/html/week1-bs.html | 254 ++++---- doc/pub/week1/html/week1-reveal.html | 206 +++--- doc/pub/week1/html/week1-solarized.html | 236 +++---- doc/pub/week1/html/week1.html | 236 +++---- doc/pub/week1/ipynb/ipynb-week1-src.tar.gz | Bin 2370249 -> 2370249 bytes doc/pub/week1/ipynb/week1.ipynb | 712 ++++++++++----------- doc/pub/week1/pdf/week1.pdf | Bin 2981799 -> 2982514 bytes doc/src/week1/week1.do.txt | 174 ++--- 8 files changed, 919 insertions(+), 899 deletions(-) diff --git a/doc/pub/week1/html/week1-bs.html b/doc/pub/week1/html/week1-bs.html index af9779a..ee922fb 100644 --- a/doc/pub/week1/html/week1-bs.html +++ b/doc/pub/week1/html/week1-bs.html @@ -51,11 +51,32 @@ 2, None, 'additional-topics-kernel-regression-gaussian-processes-and-bayesian-statistics-https-jenfb-github-io-bkmr-overview-html'), + ('Project paths, overarching view', + 2, + None, + 'project-paths-overarching-view'), + ('Possible paths for the projects', + 2, + None, + 'possible-paths-for-the-projects'), + ('The generative models', 2, None, 'the-generative-models'), + ('Paths for projects, writing own codes', + 2, + None, + 'paths-for-projects-writing-own-codes'), + ('The application path/own data', + 2, + None, + 'the-application-path-own-data'), + ('Gaussian processes and Bayesian analysis', + 2, + None, + 'gaussian-processes-and-bayesian-analysis'), + ('HPC path', 2, None, 'hpc-path'), ('Good books with hands-on material and codes', 2, None, 'good-books-with-hands-on-material-and-codes'), - ('Project paths', 2, None, 'project-paths'), ('Types of machine learning', 2, None, @@ -69,12 +90,12 @@ 2, None, 'what-is-generative-modeling'), - ('Example of generative modeling, "taken from Generative Deeep ' + ('Example of generative modeling, "taken from Generative Deep ' 'Learning by David ' 'Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html"', 2, None, - 'example-of-generative-modeling-taken-from-generative-deeep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), + 'example-of-generative-modeling-taken-from-generative-deep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), ('Generative Modeling', 2, None, 'generative-modeling'), ('Generative Versus Discriminative Modeling', 2, @@ -93,25 +114,10 @@ 2, None, 'taxonomy-of-generative-deep-learning-taken-from-generative-deep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), - ('Possible paths for the projects', + ('Reminder on the basic Machine Learning ingredients', 2, None, - 'possible-paths-for-the-projects'), - ('The generative models', 2, None, 'the-generative-models'), - ('Paths for projects, writing own codes', - 2, - None, - 'paths-for-projects-writing-own-codes'), - ('The application path', 2, None, 'the-application-path'), - ('Gaussian processes and Bayesian analysis', - 2, - None, - 'gaussian-processes-and-bayesian-analysis'), - ('HPC path', 2, None, 'hpc-path'), - ('What are the basic Machine Learning ingredients?', - 2, - None, - 'what-are-the-basic-machine-learning-ingredients'), + 'reminder-on-the-basic-machine-learning-ingredients'), ('Low-level machine learning, the family of ordinary least ' 'squares methods', 2, @@ -342,25 +348,25 @@
  • Practicalities
  • Deep learning methods covered, tentative
  • "Additional topics: Kernel regression (Gaussian processes) and Bayesian statistics":"https://jenfb.github.io/bkmr/overview.html"
  • +
  • Project paths, overarching view
  • +
  • Possible paths for the projects
  • +
  • The generative models
  • +
  • Paths for projects, writing own codes
  • +
  • The application path/own data
  • +
  • Gaussian processes and Bayesian analysis
  • +
  • HPC path
  • Good books with hands-on material and codes
  • -
  • Project paths
  • Types of machine learning
  • Main categories
  • The plethora of machine learning algorithms/methods
  • What Is Generative Modeling?
  • -
  • Example of generative modeling, "taken from Generative Deeep Learning by David Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html"
  • +
  • Example of generative modeling, "taken from Generative Deep Learning by David Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html"
  • Generative Modeling
  • Generative Versus Discriminative Modeling
  • Example of discriminative modeling, "taken from Generative Deeep Learning by David Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html"
  • Discriminative Modeling
  • Taxonomy of generative deep learning, "taken from Generative Deep Learning by David Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html"
  • -
  • Possible paths for the projects
  • -
  • The generative models
  • -
  • Paths for projects, writing own codes
  • -
  • The application path
  • -
  • Gaussian processes and Bayesian analysis
  • -
  • HPC path
  • -
  • What are the basic Machine Learning ingredients?
  • +
  • Reminder on the basic Machine Learning ingredients
  • Low-level machine learning, the family of ordinary least squares methods
  • Setting up the equations
  • The objective/cost/loss function
  • @@ -478,16 +484,16 @@

    Practicalities

    1. Lectures Thursdays 1215pm-2pm, room FØ434, Department of Physics
    2. -
    3. Lab and exercise sessions Thursdays 215pm-4pm, , room FØ434, Department of Physics
    4. +
    5. Lab and exercise sessions Thursdays 215pm-4pm, room FØ434, Department of Physics
    6. We plan to work on two projects which will define the content of the course, the format can be agreed upon by the participants
    7. -
    8. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively one long project.
    9. +
    10. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively, one long project which counts 100% of the final grade
    11. All info at the GitHub address https://github.com/CompPhysics/AdvancedMachineLearning

    Deep learning methods covered, tentative

      -
    1. Deep learning, classics +
    2. Deep learning
      1. Feed forward neural networks and its mathematics (NNs)
      2. Convolutional neural networks (CNNs)
      3. @@ -505,7 +511,7 @@

        Deep learning me
      4. Generative Adversarial Networks (GANs)
      5. Autoregressive methods (tentative)
      -
    3. Physical Sciences (often just called Physics informed) informed machine learning
    4. +
    5. Physical Sciences (often just called Physics informed neural networks, PINNs) informed machine learning

    Additional topics: Kernel regression (Gaussian processes) and Bayesian statistics

    @@ -517,7 +523,95 @@

    Project paths, overarching view

    + +

    The course can also be used as a self-study course and besides the +lectures, many of you may wish to independently work on your own +projects related to for example your thesis or research. In general, +in addition to the lectures, we have often followed five main paths: +

    + +
      +
    1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.
    2. +
    3. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.
    4. +
    5. Implementing generative methods
    6. +
    7. The own data path. Some of you may have data you wish to analyze with different deep learning methods
    8. +
    9. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work.
    10. +
    + +

    Possible paths for the projects

    + +

    The differential equation path: Here we propose a set of differential +equations (ordinary and/or partial) to be solved first using neural +networks (using either your own code or TensorFlow/Pytorch or similar +libraries). Thereafter we can extend the set of methods for +solving these equations to recurrent neural networks and autoencoders +(AE) and/or Generalized Adversarial Networks (GANs). All these +approaches can be expanded into one large project. This project can +also be extended into including Physics informed machine +learning. Here we can discuss +neural networks that are trained to solve supervised learning tasks +while respecting any given law of physics described by general +nonlinear partial differential equations. +

    + +

    For those interested in mathematical aspects of deep learning, this could also be included.

    + + +

    The generative models

    + +

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent +the lectures. Topics for data sets will be discussed. +

    + + +

    Paths for projects, writing own codes

    + +

    The computational path: Here we propose a path where you develop your +own code for a convolutional or eventually recurrent neural network +and apply this to data selects of your own selection. The code should +be object oriented and flexible allowing for eventual extensions by +including different Loss/Cost functions and other +functionalities. Feel free to select data sets from those suggested +below here. This code can also be extended upon by adding for example +autoencoders. You can compare your own codes with implementations +using TensorFlow(Keras)/PyTorch or other libraries. +

    + + +

    The application path/own data

    + +

    The application path: Here you can use the most relevant method(s) +(say convolutional neural networks for images) and apply this(these) +to data sets relevant for your own research. +

    + + +

    Gaussian processes and Bayesian analysis

    + +

    The Gaussian processes/Bayesian statistics path: Kernel regression +(Gaussian processes) and Bayesian +statistics are popular +tools in the machine learning literature. The main idea behind these +approaches is to flexibly model the relationship between a large +number of variables and a particular outcome (dependent +variable). This can form a second part of a project where for example +standard Kernel regression methods are used on a specific data +set. Alternatively, participants can opt to work on a large project +relevant for their own research using gaussian processes and/or +Bayesian machine Learning. +

    + + +

    HPC path

    + +

    Another alternative is to study high-performance computing aspects in +designing ML codes. This can also be linked with an exploration of +mathematical aspects of deep learning methods. +

    Good books with hands-on material and codes

    @@ -537,22 +631,6 @@

    Good books w from Goodfellow, Bengio and Courville's text Deep Learning

    - -

    Project paths

    - -

    The course can also be used as a self-study course and besides the -lectures, many of you may wish to independently work on your own -projects related to for example your thesis or research. In general, -in addition to the lectures, we have often followed five main paths: -

    - -
      -
    1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.
    2. -
    3. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.
    4. -
    5. Implementing generative methods
    6. -
    7. The own data path. Some of you may have data you wish to analyze with different deep learning methods
    8. -
    9. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work.
    10. -

    Types of machine learning

    @@ -619,7 +697,7 @@

    What Is Generative Modeling?

    -

    Example of generative modeling, taken from Generative Deeep Learning by David Foster

    +

    Example of generative modeling, taken from Generative Deep Learning by David Foster



    @@ -692,79 +770,7 @@

    Possible paths for the projects

    - -

    The differential equation path: Here we propose a set of differential -equations (ordinary and/or partial) to be solved first using neural -networks (using either your own code or TensorFlow/Pytorch or similar -libraries). Thereafter we can extend the set of methods for -solving these equations to recurrent neural networks and autoencoders -(AE) and/or Generalized Adversarial Networks (GANs). All these -approaches can be expanded into one large project. This project can -also be extended into including Physics informed machine -learning. Here we can discuss -neural networks that are trained to solve supervised learning tasks -while respecting any given law of physics described by general -nonlinear partial differential equations. -

    - -

    For those interested in mathematical aspects of deep learning, this could also be included.

    - - -

    The generative models

    - -

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent -the lectures. Topics for data sets will be discussed during the lab sessions. -

    - - -

    Paths for projects, writing own codes

    - -

    The computational path: Here we propose a path where you develop your -own code for a convolutional or eventually recurrent neural network -and apply this to data selects of your own selection. The code should -be object oriented and flexible allowing for eventual extensions by -including different Loss/Cost functions and other -functionalities. Feel free to select data sets from those suggested -below here. This code can also be extended upon by adding for example -autoencoders. You can compare your own codes with implementations -using TensorFlow(Keras)/PyTorch or other libraries. -

    - - -

    The application path

    - -

    The application path: Here you can use the most relevant method(s) -(say convolutional neural networks for images) and apply this(these) -to data sets relevant for your own research. -

    - - -

    Gaussian processes and Bayesian analysis

    - -

    The Gaussian processes/Bayesian statistics path: Kernel regression -(Gaussian processes) and Bayesian -statistics are popular -tools in the machine learning literature. The main idea behind these -approaches is to flexibly model the relationship between a large -number of variables and a particular outcome (dependent -variable). This can form a second part of a project where for example -standard Kernel regression methods are used on a specific data -set. Alternatively, participants can opt to work on a large project -relevant for their own research using gaussian processes and/or -Bayesian machine Learning. -

    - - -

    HPC path

    - -

    Another alternative is to study high-performance computing aspects in -designing ML codes. This can also be linked with an exploration of -mathematical aspects of deep learning methods. -

    - - -

    What are the basic Machine Learning ingredients?

    +

    Reminder on the basic Machine Learning ingredients

    diff --git a/doc/pub/week1/html/week1-reveal.html b/doc/pub/week1/html/week1-reveal.html index 57b621b..0be7873 100644 --- a/doc/pub/week1/html/week1-reveal.html +++ b/doc/pub/week1/html/week1-reveal.html @@ -212,9 +212,9 @@

    Practicalities

    1. Lectures Thursdays 1215pm-2pm, room FØ434, Department of Physics
    2. -

    3. Lab and exercise sessions Thursdays 215pm-4pm, , room FØ434, Department of Physics
    4. +

    5. Lab and exercise sessions Thursdays 215pm-4pm, room FØ434, Department of Physics
    6. We plan to work on two projects which will define the content of the course, the format can be agreed upon by the participants
    7. -

    8. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively one long project.
    9. +

    10. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively, one long project which counts 100% of the final grade
    11. All info at the GitHub address https://github.com/CompPhysics/AdvancedMachineLearning
    @@ -223,7 +223,7 @@

    Practicalities

    Deep learning methods covered, tentative

      -

    1. Deep learning, classics +

    2. Deep learning

      1. Feed forward neural networks and its mathematics (NNs)
      2. Convolutional neural networks (CNNs)
      3. @@ -244,7 +244,7 @@

        Deep learning methods covered,

      4. Autoregressive methods (tentative)

      -

    3. Physical Sciences (often just called Physics informed) informed machine learning
    4. +

    5. Physical Sciences (often just called Physics informed neural networks, PINNs) informed machine learning
    @@ -258,28 +258,11 @@

    Good books with hands-on material and codes

    - - -

    All three books have GitHub addresses from where one can download all codes. We will borrow most of the material from these three texts as well as -from Goodfellow, Bengio and Courville's text Deep Learning -

    - - -
    -

    Project paths

    +

    Project paths, overarching view

    The course can also be used as a self-study course and besides the lectures, many of you may wish to independently work on your own @@ -296,6 +279,101 @@

    Project paths

    +
    +

    Possible paths for the projects

    + +

    The differential equation path: Here we propose a set of differential +equations (ordinary and/or partial) to be solved first using neural +networks (using either your own code or TensorFlow/Pytorch or similar +libraries). Thereafter we can extend the set of methods for +solving these equations to recurrent neural networks and autoencoders +(AE) and/or Generalized Adversarial Networks (GANs). All these +approaches can be expanded into one large project. This project can +also be extended into including Physics informed machine +learning. Here we can discuss +neural networks that are trained to solve supervised learning tasks +while respecting any given law of physics described by general +nonlinear partial differential equations. +

    + +

    For those interested in mathematical aspects of deep learning, this could also be included.

    +
    + +
    +

    The generative models

    + +

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent +the lectures. Topics for data sets will be discussed. +

    +
    + +
    +

    Paths for projects, writing own codes

    + +

    The computational path: Here we propose a path where you develop your +own code for a convolutional or eventually recurrent neural network +and apply this to data selects of your own selection. The code should +be object oriented and flexible allowing for eventual extensions by +including different Loss/Cost functions and other +functionalities. Feel free to select data sets from those suggested +below here. This code can also be extended upon by adding for example +autoencoders. You can compare your own codes with implementations +using TensorFlow(Keras)/PyTorch or other libraries. +

    +
    + +
    +

    The application path/own data

    + +

    The application path: Here you can use the most relevant method(s) +(say convolutional neural networks for images) and apply this(these) +to data sets relevant for your own research. +

    +
    + +
    +

    Gaussian processes and Bayesian analysis

    + +

    The Gaussian processes/Bayesian statistics path: Kernel regression +(Gaussian processes) and Bayesian +statistics are popular +tools in the machine learning literature. The main idea behind these +approaches is to flexibly model the relationship between a large +number of variables and a particular outcome (dependent +variable). This can form a second part of a project where for example +standard Kernel regression methods are used on a specific data +set. Alternatively, participants can opt to work on a large project +relevant for their own research using gaussian processes and/or +Bayesian machine Learning. +

    +
    + +
    +

    HPC path

    + +

    Another alternative is to study high-performance computing aspects in +designing ML codes. This can also be linked with an exploration of +mathematical aspects of deep learning methods. +

    +
    + +
    +

    Good books with hands-on material and codes

    + + +

    All three books have GitHub addresses from where one can download all codes. We will borrow most of the material from these three texts as well as +from Goodfellow, Bengio and Courville's text Deep Learning +

    +
    +

    Types of machine learning

    @@ -363,7 +441,7 @@

    What Is Generative Modeling?

    -

    Example of generative modeling, taken from Generative Deeep Learning by David Foster

    +

    Example of generative modeling, taken from Generative Deep Learning by David Foster



    @@ -442,85 +520,7 @@

    Possible paths for the projects

    - -

    The differential equation path: Here we propose a set of differential -equations (ordinary and/or partial) to be solved first using neural -networks (using either your own code or TensorFlow/Pytorch or similar -libraries). Thereafter we can extend the set of methods for -solving these equations to recurrent neural networks and autoencoders -(AE) and/or Generalized Adversarial Networks (GANs). All these -approaches can be expanded into one large project. This project can -also be extended into including Physics informed machine -learning. Here we can discuss -neural networks that are trained to solve supervised learning tasks -while respecting any given law of physics described by general -nonlinear partial differential equations. -

    - -

    For those interested in mathematical aspects of deep learning, this could also be included.

    -
    - -
    -

    The generative models

    - -

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent -the lectures. Topics for data sets will be discussed during the lab sessions. -

    -
    - -
    -

    Paths for projects, writing own codes

    - -

    The computational path: Here we propose a path where you develop your -own code for a convolutional or eventually recurrent neural network -and apply this to data selects of your own selection. The code should -be object oriented and flexible allowing for eventual extensions by -including different Loss/Cost functions and other -functionalities. Feel free to select data sets from those suggested -below here. This code can also be extended upon by adding for example -autoencoders. You can compare your own codes with implementations -using TensorFlow(Keras)/PyTorch or other libraries. -

    -
    - -
    -

    The application path

    - -

    The application path: Here you can use the most relevant method(s) -(say convolutional neural networks for images) and apply this(these) -to data sets relevant for your own research. -

    -
    - -
    -

    Gaussian processes and Bayesian analysis

    - -

    The Gaussian processes/Bayesian statistics path: Kernel regression -(Gaussian processes) and Bayesian -statistics are popular -tools in the machine learning literature. The main idea behind these -approaches is to flexibly model the relationship between a large -number of variables and a particular outcome (dependent -variable). This can form a second part of a project where for example -standard Kernel regression methods are used on a specific data -set. Alternatively, participants can opt to work on a large project -relevant for their own research using gaussian processes and/or -Bayesian machine Learning. -

    -
    - -
    -

    HPC path

    - -

    Another alternative is to study high-performance computing aspects in -designing ML codes. This can also be linked with an exploration of -mathematical aspects of deep learning methods. -

    -
    - -
    -

    What are the basic Machine Learning ingredients?

    +

    Reminder on the basic Machine Learning ingredients

    diff --git a/doc/pub/week1/html/week1-solarized.html b/doc/pub/week1/html/week1-solarized.html index c9bf836..9f39a8c 100644 --- a/doc/pub/week1/html/week1-solarized.html +++ b/doc/pub/week1/html/week1-solarized.html @@ -78,11 +78,32 @@ 2, None, 'additional-topics-kernel-regression-gaussian-processes-and-bayesian-statistics-https-jenfb-github-io-bkmr-overview-html'), + ('Project paths, overarching view', + 2, + None, + 'project-paths-overarching-view'), + ('Possible paths for the projects', + 2, + None, + 'possible-paths-for-the-projects'), + ('The generative models', 2, None, 'the-generative-models'), + ('Paths for projects, writing own codes', + 2, + None, + 'paths-for-projects-writing-own-codes'), + ('The application path/own data', + 2, + None, + 'the-application-path-own-data'), + ('Gaussian processes and Bayesian analysis', + 2, + None, + 'gaussian-processes-and-bayesian-analysis'), + ('HPC path', 2, None, 'hpc-path'), ('Good books with hands-on material and codes', 2, None, 'good-books-with-hands-on-material-and-codes'), - ('Project paths', 2, None, 'project-paths'), ('Types of machine learning', 2, None, @@ -96,12 +117,12 @@ 2, None, 'what-is-generative-modeling'), - ('Example of generative modeling, "taken from Generative Deeep ' + ('Example of generative modeling, "taken from Generative Deep ' 'Learning by David ' 'Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html"', 2, None, - 'example-of-generative-modeling-taken-from-generative-deeep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), + 'example-of-generative-modeling-taken-from-generative-deep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), ('Generative Modeling', 2, None, 'generative-modeling'), ('Generative Versus Discriminative Modeling', 2, @@ -120,25 +141,10 @@ 2, None, 'taxonomy-of-generative-deep-learning-taken-from-generative-deep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), - ('Possible paths for the projects', + ('Reminder on the basic Machine Learning ingredients', 2, None, - 'possible-paths-for-the-projects'), - ('The generative models', 2, None, 'the-generative-models'), - ('Paths for projects, writing own codes', - 2, - None, - 'paths-for-projects-writing-own-codes'), - ('The application path', 2, None, 'the-application-path'), - ('Gaussian processes and Bayesian analysis', - 2, - None, - 'gaussian-processes-and-bayesian-analysis'), - ('HPC path', 2, None, 'hpc-path'), - ('What are the basic Machine Learning ingredients?', - 2, - None, - 'what-are-the-basic-machine-learning-ingredients'), + 'reminder-on-the-basic-machine-learning-ingredients'), ('Low-level machine learning, the family of ordinary least ' 'squares methods', 2, @@ -390,16 +396,16 @@

    Practicalities

    1. Lectures Thursdays 1215pm-2pm, room FØ434, Department of Physics
    2. -
    3. Lab and exercise sessions Thursdays 215pm-4pm, , room FØ434, Department of Physics
    4. +
    5. Lab and exercise sessions Thursdays 215pm-4pm, room FØ434, Department of Physics
    6. We plan to work on two projects which will define the content of the course, the format can be agreed upon by the participants
    7. -
    8. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively one long project.
    9. +
    10. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively, one long project which counts 100% of the final grade
    11. All info at the GitHub address https://github.com/CompPhysics/AdvancedMachineLearning










    Deep learning methods covered, tentative

      -
    1. Deep learning, classics +
    2. Deep learning
      1. Feed forward neural networks and its mathematics (NNs)
      2. Convolutional neural networks (CNNs)
      3. @@ -417,7 +423,7 @@

        Deep learning methods covered,
      4. Generative Adversarial Networks (GANs)
      5. Autoregressive methods (tentative)
      -
    3. Physical Sciences (often just called Physics informed) informed machine learning
    4. +
    5. Physical Sciences (often just called Physics informed neural networks, PINNs) informed machine learning










    Additional topics: Kernel regression (Gaussian processes) and Bayesian statistics

    @@ -429,7 +435,95 @@

    Project paths, overarching view

    + +

    The course can also be used as a self-study course and besides the +lectures, many of you may wish to independently work on your own +projects related to for example your thesis or research. In general, +in addition to the lectures, we have often followed five main paths: +

    + +
      +
    1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.
    2. +
    3. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.
    4. +
    5. Implementing generative methods
    6. +
    7. The own data path. Some of you may have data you wish to analyze with different deep learning methods
    8. +
    9. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work.
    10. +
    +









    +

    Possible paths for the projects

    + +

    The differential equation path: Here we propose a set of differential +equations (ordinary and/or partial) to be solved first using neural +networks (using either your own code or TensorFlow/Pytorch or similar +libraries). Thereafter we can extend the set of methods for +solving these equations to recurrent neural networks and autoencoders +(AE) and/or Generalized Adversarial Networks (GANs). All these +approaches can be expanded into one large project. This project can +also be extended into including Physics informed machine +learning. Here we can discuss +neural networks that are trained to solve supervised learning tasks +while respecting any given law of physics described by general +nonlinear partial differential equations. +

    + +

    For those interested in mathematical aspects of deep learning, this could also be included.

    + +









    +

    The generative models

    + +

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent +the lectures. Topics for data sets will be discussed. +

    + +









    +

    Paths for projects, writing own codes

    + +

    The computational path: Here we propose a path where you develop your +own code for a convolutional or eventually recurrent neural network +and apply this to data selects of your own selection. The code should +be object oriented and flexible allowing for eventual extensions by +including different Loss/Cost functions and other +functionalities. Feel free to select data sets from those suggested +below here. This code can also be extended upon by adding for example +autoencoders. You can compare your own codes with implementations +using TensorFlow(Keras)/PyTorch or other libraries. +

    + +









    +

    The application path/own data

    + +

    The application path: Here you can use the most relevant method(s) +(say convolutional neural networks for images) and apply this(these) +to data sets relevant for your own research. +

    + +









    +

    Gaussian processes and Bayesian analysis

    + +

    The Gaussian processes/Bayesian statistics path: Kernel regression +(Gaussian processes) and Bayesian +statistics are popular +tools in the machine learning literature. The main idea behind these +approaches is to flexibly model the relationship between a large +number of variables and a particular outcome (dependent +variable). This can form a second part of a project where for example +standard Kernel regression methods are used on a specific data +set. Alternatively, participants can opt to work on a large project +relevant for their own research using gaussian processes and/or +Bayesian machine Learning. +

    + +









    +

    HPC path

    + +

    Another alternative is to study high-performance computing aspects in +designing ML codes. This can also be linked with an exploration of +mathematical aspects of deep learning methods. +











    Good books with hands-on material and codes

    @@ -448,22 +542,6 @@

    Good books with hands-on ma from Goodfellow, Bengio and Courville's text Deep Learning

    -









    -

    Project paths

    - -

    The course can also be used as a self-study course and besides the -lectures, many of you may wish to independently work on your own -projects related to for example your thesis or research. In general, -in addition to the lectures, we have often followed five main paths: -

    - -
      -
    1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.
    2. -
    3. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.
    4. -
    5. Implementing generative methods
    6. -
    7. The own data path. Some of you may have data you wish to analyze with different deep learning methods
    8. -
    9. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work.
    10. -










    Types of machine learning

    @@ -528,7 +606,7 @@

    What Is Generative Modeling?











    -

    Example of generative modeling, taken from Generative Deeep Learning by David Foster

    +

    Example of generative modeling, taken from Generative Deep Learning by David Foster



    @@ -601,79 +679,7 @@

    Possible paths for the projects

    - -

    The differential equation path: Here we propose a set of differential -equations (ordinary and/or partial) to be solved first using neural -networks (using either your own code or TensorFlow/Pytorch or similar -libraries). Thereafter we can extend the set of methods for -solving these equations to recurrent neural networks and autoencoders -(AE) and/or Generalized Adversarial Networks (GANs). All these -approaches can be expanded into one large project. This project can -also be extended into including Physics informed machine -learning. Here we can discuss -neural networks that are trained to solve supervised learning tasks -while respecting any given law of physics described by general -nonlinear partial differential equations. -

    - -

    For those interested in mathematical aspects of deep learning, this could also be included.

    - -









    -

    The generative models

    - -

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent -the lectures. Topics for data sets will be discussed during the lab sessions. -

    - -









    -

    Paths for projects, writing own codes

    - -

    The computational path: Here we propose a path where you develop your -own code for a convolutional or eventually recurrent neural network -and apply this to data selects of your own selection. The code should -be object oriented and flexible allowing for eventual extensions by -including different Loss/Cost functions and other -functionalities. Feel free to select data sets from those suggested -below here. This code can also be extended upon by adding for example -autoencoders. You can compare your own codes with implementations -using TensorFlow(Keras)/PyTorch or other libraries. -

    - -









    -

    The application path

    - -

    The application path: Here you can use the most relevant method(s) -(say convolutional neural networks for images) and apply this(these) -to data sets relevant for your own research. -

    - -









    -

    Gaussian processes and Bayesian analysis

    - -

    The Gaussian processes/Bayesian statistics path: Kernel regression -(Gaussian processes) and Bayesian -statistics are popular -tools in the machine learning literature. The main idea behind these -approaches is to flexibly model the relationship between a large -number of variables and a particular outcome (dependent -variable). This can form a second part of a project where for example -standard Kernel regression methods are used on a specific data -set. Alternatively, participants can opt to work on a large project -relevant for their own research using gaussian processes and/or -Bayesian machine Learning. -

    - -









    -

    HPC path

    - -

    Another alternative is to study high-performance computing aspects in -designing ML codes. This can also be linked with an exploration of -mathematical aspects of deep learning methods. -

    - -









    -

    What are the basic Machine Learning ingredients?

    +

    Reminder on the basic Machine Learning ingredients

    diff --git a/doc/pub/week1/html/week1.html b/doc/pub/week1/html/week1.html index 276b14e..1fadfc7 100644 --- a/doc/pub/week1/html/week1.html +++ b/doc/pub/week1/html/week1.html @@ -155,11 +155,32 @@ 2, None, 'additional-topics-kernel-regression-gaussian-processes-and-bayesian-statistics-https-jenfb-github-io-bkmr-overview-html'), + ('Project paths, overarching view', + 2, + None, + 'project-paths-overarching-view'), + ('Possible paths for the projects', + 2, + None, + 'possible-paths-for-the-projects'), + ('The generative models', 2, None, 'the-generative-models'), + ('Paths for projects, writing own codes', + 2, + None, + 'paths-for-projects-writing-own-codes'), + ('The application path/own data', + 2, + None, + 'the-application-path-own-data'), + ('Gaussian processes and Bayesian analysis', + 2, + None, + 'gaussian-processes-and-bayesian-analysis'), + ('HPC path', 2, None, 'hpc-path'), ('Good books with hands-on material and codes', 2, None, 'good-books-with-hands-on-material-and-codes'), - ('Project paths', 2, None, 'project-paths'), ('Types of machine learning', 2, None, @@ -173,12 +194,12 @@ 2, None, 'what-is-generative-modeling'), - ('Example of generative modeling, "taken from Generative Deeep ' + ('Example of generative modeling, "taken from Generative Deep ' 'Learning by David ' 'Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html"', 2, None, - 'example-of-generative-modeling-taken-from-generative-deeep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), + 'example-of-generative-modeling-taken-from-generative-deep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), ('Generative Modeling', 2, None, 'generative-modeling'), ('Generative Versus Discriminative Modeling', 2, @@ -197,25 +218,10 @@ 2, None, 'taxonomy-of-generative-deep-learning-taken-from-generative-deep-learning-by-david-foster-https-www-oreilly-com-library-view-generative-deep-learning-9781098134174-ch01-html'), - ('Possible paths for the projects', + ('Reminder on the basic Machine Learning ingredients', 2, None, - 'possible-paths-for-the-projects'), - ('The generative models', 2, None, 'the-generative-models'), - ('Paths for projects, writing own codes', - 2, - None, - 'paths-for-projects-writing-own-codes'), - ('The application path', 2, None, 'the-application-path'), - ('Gaussian processes and Bayesian analysis', - 2, - None, - 'gaussian-processes-and-bayesian-analysis'), - ('HPC path', 2, None, 'hpc-path'), - ('What are the basic Machine Learning ingredients?', - 2, - None, - 'what-are-the-basic-machine-learning-ingredients'), + 'reminder-on-the-basic-machine-learning-ingredients'), ('Low-level machine learning, the family of ordinary least ' 'squares methods', 2, @@ -467,16 +473,16 @@

    Practicalities

    1. Lectures Thursdays 1215pm-2pm, room FØ434, Department of Physics
    2. -
    3. Lab and exercise sessions Thursdays 215pm-4pm, , room FØ434, Department of Physics
    4. +
    5. Lab and exercise sessions Thursdays 215pm-4pm, room FØ434, Department of Physics
    6. We plan to work on two projects which will define the content of the course, the format can be agreed upon by the participants
    7. -
    8. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively one long project.
    9. +
    10. No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively, one long project which counts 100% of the final grade
    11. All info at the GitHub address https://github.com/CompPhysics/AdvancedMachineLearning










    Deep learning methods covered, tentative

      -
    1. Deep learning, classics +
    2. Deep learning
      1. Feed forward neural networks and its mathematics (NNs)
      2. Convolutional neural networks (CNNs)
      3. @@ -494,7 +500,7 @@

        Deep learning methods covered,
      4. Generative Adversarial Networks (GANs)
      5. Autoregressive methods (tentative)
      -
    3. Physical Sciences (often just called Physics informed) informed machine learning
    4. +
    5. Physical Sciences (often just called Physics informed neural networks, PINNs) informed machine learning










    Additional topics: Kernel regression (Gaussian processes) and Bayesian statistics

    @@ -506,7 +512,95 @@

    Project paths, overarching view

    + +

    The course can also be used as a self-study course and besides the +lectures, many of you may wish to independently work on your own +projects related to for example your thesis or research. In general, +in addition to the lectures, we have often followed five main paths: +

    + +
      +
    1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.
    2. +
    3. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.
    4. +
    5. Implementing generative methods
    6. +
    7. The own data path. Some of you may have data you wish to analyze with different deep learning methods
    8. +
    9. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work.
    10. +
    +









    +

    Possible paths for the projects

    + +

    The differential equation path: Here we propose a set of differential +equations (ordinary and/or partial) to be solved first using neural +networks (using either your own code or TensorFlow/Pytorch or similar +libraries). Thereafter we can extend the set of methods for +solving these equations to recurrent neural networks and autoencoders +(AE) and/or Generalized Adversarial Networks (GANs). All these +approaches can be expanded into one large project. This project can +also be extended into including Physics informed machine +learning. Here we can discuss +neural networks that are trained to solve supervised learning tasks +while respecting any given law of physics described by general +nonlinear partial differential equations. +

    + +

    For those interested in mathematical aspects of deep learning, this could also be included.

    + +









    +

    The generative models

    + +

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent +the lectures. Topics for data sets will be discussed. +

    + +









    +

    Paths for projects, writing own codes

    + +

    The computational path: Here we propose a path where you develop your +own code for a convolutional or eventually recurrent neural network +and apply this to data selects of your own selection. The code should +be object oriented and flexible allowing for eventual extensions by +including different Loss/Cost functions and other +functionalities. Feel free to select data sets from those suggested +below here. This code can also be extended upon by adding for example +autoencoders. You can compare your own codes with implementations +using TensorFlow(Keras)/PyTorch or other libraries. +

    + +









    +

    The application path/own data

    + +

    The application path: Here you can use the most relevant method(s) +(say convolutional neural networks for images) and apply this(these) +to data sets relevant for your own research. +

    + +









    +

    Gaussian processes and Bayesian analysis

    + +

    The Gaussian processes/Bayesian statistics path: Kernel regression +(Gaussian processes) and Bayesian +statistics are popular +tools in the machine learning literature. The main idea behind these +approaches is to flexibly model the relationship between a large +number of variables and a particular outcome (dependent +variable). This can form a second part of a project where for example +standard Kernel regression methods are used on a specific data +set. Alternatively, participants can opt to work on a large project +relevant for their own research using gaussian processes and/or +Bayesian machine Learning. +

    + +









    +

    HPC path

    + +

    Another alternative is to study high-performance computing aspects in +designing ML codes. This can also be linked with an exploration of +mathematical aspects of deep learning methods. +











    Good books with hands-on material and codes

    @@ -525,22 +619,6 @@

    Good books with hands-on ma from Goodfellow, Bengio and Courville's text Deep Learning

    -









    -

    Project paths

    - -

    The course can also be used as a self-study course and besides the -lectures, many of you may wish to independently work on your own -projects related to for example your thesis or research. In general, -in addition to the lectures, we have often followed five main paths: -

    - -
      -
    1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.
    2. -
    3. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.
    4. -
    5. Implementing generative methods
    6. -
    7. The own data path. Some of you may have data you wish to analyze with different deep learning methods
    8. -
    9. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work.
    10. -










    Types of machine learning

    @@ -605,7 +683,7 @@

    What Is Generative Modeling?











    -

    Example of generative modeling, taken from Generative Deeep Learning by David Foster

    +

    Example of generative modeling, taken from Generative Deep Learning by David Foster



    @@ -678,79 +756,7 @@

    Possible paths for the projects

    - -

    The differential equation path: Here we propose a set of differential -equations (ordinary and/or partial) to be solved first using neural -networks (using either your own code or TensorFlow/Pytorch or similar -libraries). Thereafter we can extend the set of methods for -solving these equations to recurrent neural networks and autoencoders -(AE) and/or Generalized Adversarial Networks (GANs). All these -approaches can be expanded into one large project. This project can -also be extended into including Physics informed machine -learning. Here we can discuss -neural networks that are trained to solve supervised learning tasks -while respecting any given law of physics described by general -nonlinear partial differential equations. -

    - -

    For those interested in mathematical aspects of deep learning, this could also be included.

    - -









    -

    The generative models

    - -

    This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent -the lectures. Topics for data sets will be discussed during the lab sessions. -

    - -









    -

    Paths for projects, writing own codes

    - -

    The computational path: Here we propose a path where you develop your -own code for a convolutional or eventually recurrent neural network -and apply this to data selects of your own selection. The code should -be object oriented and flexible allowing for eventual extensions by -including different Loss/Cost functions and other -functionalities. Feel free to select data sets from those suggested -below here. This code can also be extended upon by adding for example -autoencoders. You can compare your own codes with implementations -using TensorFlow(Keras)/PyTorch or other libraries. -

    - -









    -

    The application path

    - -

    The application path: Here you can use the most relevant method(s) -(say convolutional neural networks for images) and apply this(these) -to data sets relevant for your own research. -

    - -









    -

    Gaussian processes and Bayesian analysis

    - -

    The Gaussian processes/Bayesian statistics path: Kernel regression -(Gaussian processes) and Bayesian -statistics are popular -tools in the machine learning literature. The main idea behind these -approaches is to flexibly model the relationship between a large -number of variables and a particular outcome (dependent -variable). This can form a second part of a project where for example -standard Kernel regression methods are used on a specific data -set. Alternatively, participants can opt to work on a large project -relevant for their own research using gaussian processes and/or -Bayesian machine Learning. -

    - -









    -

    HPC path

    - -

    Another alternative is to study high-performance computing aspects in -designing ML codes. This can also be linked with an exploration of -mathematical aspects of deep learning methods. -

    - -









    -

    What are the basic Machine Learning ingredients?

    +

    Reminder on the basic Machine Learning ingredients

    diff --git a/doc/pub/week1/ipynb/ipynb-week1-src.tar.gz b/doc/pub/week1/ipynb/ipynb-week1-src.tar.gz index 39a8ea8ce1e3ea55e2f8d98855bf2efbef5a19f3..07310da3c9c77b945357ba554b77270e69d79ea6 100644 GIT binary patch delta 128 zcmWN_w*i6x002Qi^bw4RA|_0g!>|LRSbSyUGA>}p0PZ8jHP`*#Vb`O6B|%fPPb8E` z1`^9qM$%^@V@V~GiA-fCb6Lnza#=|sYuQLCTd8CxdpXEaPEyNRE^?LIhx_;O2is~L A$p8QV delta 128 zcmWN_xe" ] }, { "cell_type": "markdown", - "id": "b3d101e3", + "id": "6ac71ef7", "metadata": { "editable": true }, "source": [ "## Deep learning methods covered, tentative\n", "\n", - "1. **Deep learning, classics**\n", + "1. **Deep learning**\n", "\n", "a. Feed forward neural networks and its mathematics (NNs)\n", "\n", @@ -102,12 +102,12 @@ "\n", "f. Autoregressive methods (tentative)\n", "\n", - "7. **Physical Sciences (often just called Physics informed) informed machine learning**" + "7. **Physical Sciences (often just called Physics informed neural networks, PINNs) informed machine learning**" ] }, { "cell_type": "markdown", - "id": "7feacd31", + "id": "b48670dd", "metadata": { "editable": true }, @@ -120,55 +120,163 @@ "large number of variables and a particular outcome (dependent\n", "variable).\n", "\n", - "We have not made plans for Reinforcement learning, but this can be another option." + "We have not made plans for Reinforcement learning." ] }, { "cell_type": "markdown", - "id": "2b4d7869", + "id": "31f5ea12", "metadata": { "editable": true }, "source": [ - "## Good books with hands-on material and codes\n", - "* [Sebastian Rashcka et al, Machine learning with Sickit-Learn and PyTorch](https://sebastianraschka.com/blog/2022/ml-pytorch-book.html)\n", + "## Project paths, overarching view\n", "\n", - "* [David Foster, Generative Deep Learning with TensorFlow](https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html)\n", + "The course can also be used as a self-study course and besides the\n", + "lectures, many of you may wish to independently work on your own\n", + "projects related to for example your thesis or research. In general,\n", + "in addition to the lectures, we have often followed five main paths:\n", "\n", - "* [Bali and Gavras, Generative AI with Python and TensorFlow 2](https://github.com/PacktPublishing/Hands-On-Generative-AI-with-Python-and-TensorFlow-2)\n", + "1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.\n", "\n", - "All three books have GitHub addresses from where one can download all codes. We will borrow most of the material from these three texts as well as \n", - "from Goodfellow, Bengio and Courville's text [Deep Learning](https://www.deeplearningbook.org/)" + "2. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.\n", + "\n", + "3. Implementing generative methods\n", + "\n", + "4. The own data path. Some of you may have data you wish to analyze with different deep learning methods\n", + "\n", + "5. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work." ] }, { "cell_type": "markdown", - "id": "3f64deee", + "id": "1b143726", "metadata": { "editable": true }, "source": [ - "## Project paths\n", + "## Possible paths for the projects\n", "\n", - "The course can also be used as a self-study course and besides the\n", - "lectures, many of you may wish to independently work on your own\n", - "projects related to for example your thesis or research. In general,\n", - "in addition to the lectures, we have often followed five main paths:\n", + "The differential equation path: Here we propose a set of differential\n", + "equations (ordinary and/or partial) to be solved first using neural\n", + "networks (using either your own code or TensorFlow/Pytorch or similar\n", + "libraries). Thereafter we can extend the set of methods for\n", + "solving these equations to recurrent neural networks and autoencoders\n", + "(AE) and/or Generalized Adversarial Networks (GANs). All these\n", + "approaches can be expanded into one large project. This project can\n", + "also be extended into including [Physics informed machine\n", + "learning](https://github.com/maziarraissi/PINNs). Here we can discuss\n", + "neural networks that are trained to solve supervised learning tasks\n", + "while respecting any given law of physics described by general\n", + "nonlinear partial differential equations.\n", "\n", - "1. The coding path. This leads often to a single project only where one focuses on coding for example CNNs or RNNs or parts of LLMs from scratch.\n", + "For those interested in mathematical aspects of deep learning, this could also be included." + ] + }, + { + "cell_type": "markdown", + "id": "46bb0b04", + "metadata": { + "editable": true + }, + "source": [ + "## The generative models\n", "\n", - "2. The Physics Informed neural network path (PINNs). Here we define some basic PDEs which are solved by using PINNs. We start normally with studies of selected differential equations using NNs, and/or RNNs, and/or GNNs or Autoencoders before moving over to PINNs.\n", + "This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent\n", + "the lectures. Topics for data sets will be discussed." + ] + }, + { + "cell_type": "markdown", + "id": "f715b938", + "metadata": { + "editable": true + }, + "source": [ + "## Paths for projects, writing own codes\n", "\n", - "3. Implementing generative methods\n", + "The computational path: Here we propose a path where you develop your\n", + "own code for a convolutional or eventually recurrent neural network\n", + "and apply this to data selects of your own selection. The code should\n", + "be object oriented and flexible allowing for eventual extensions by\n", + "including different Loss/Cost functions and other\n", + "functionalities. Feel free to select data sets from those suggested\n", + "below here. This code can also be extended upon by adding for example\n", + "autoencoders. You can compare your own codes with implementations\n", + "using TensorFlow(Keras)/PyTorch or other libraries." + ] + }, + { + "cell_type": "markdown", + "id": "7a7fd976", + "metadata": { + "editable": true + }, + "source": [ + "## The application path/own data\n", "\n", - "4. The own data path. Some of you may have data you wish to analyze with different deep learning methods\n", + "The application path: Here you can use the most relevant method(s)\n", + "(say convolutional neural networks for images) and apply this(these)\n", + "to data sets relevant for your own research." + ] + }, + { + "cell_type": "markdown", + "id": "e01b248d", + "metadata": { + "editable": true + }, + "source": [ + "## Gaussian processes and Bayesian analysis\n", "\n", - "5. The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work." + "The Gaussian processes/Bayesian statistics path: [Kernel regression\n", + "(Gaussian processes) and Bayesian\n", + "statistics](https://jenfb.github.io/bkmr/overview.html) are popular\n", + "tools in the machine learning literature. The main idea behind these\n", + "approaches is to flexibly model the relationship between a large\n", + "number of variables and a particular outcome (dependent\n", + "variable). This can form a second part of a project where for example\n", + "standard Kernel regression methods are used on a specific data\n", + "set. Alternatively, participants can opt to work on a large project\n", + "relevant for their own research using gaussian processes and/or\n", + "Bayesian machine Learning." + ] + }, + { + "cell_type": "markdown", + "id": "25e91e6f", + "metadata": { + "editable": true + }, + "source": [ + "## HPC path\n", + "\n", + "Another alternative is to study high-performance computing aspects in\n", + "designing ML codes. This can also be linked with an exploration of\n", + "mathematical aspects of deep learning methods." + ] + }, + { + "cell_type": "markdown", + "id": "ea8c8e03", + "metadata": { + "editable": true + }, + "source": [ + "## Good books with hands-on material and codes\n", + "* [Sebastian Rashcka et al, Machine learning with Sickit-Learn and PyTorch](https://sebastianraschka.com/blog/2022/ml-pytorch-book.html)\n", + "\n", + "* [David Foster, Generative Deep Learning with TensorFlow](https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html)\n", + "\n", + "* [Bali and Gavras, Generative AI with Python and TensorFlow 2](https://github.com/PacktPublishing/Hands-On-Generative-AI-with-Python-and-TensorFlow-2)\n", + "\n", + "All three books have GitHub addresses from where one can download all codes. We will borrow most of the material from these three texts as well as \n", + "from Goodfellow, Bengio and Courville's text [Deep Learning](https://www.deeplearningbook.org/)" ] }, { "cell_type": "markdown", - "id": "9d95acb0", + "id": "cf44a2b7", "metadata": { "editable": true }, @@ -185,7 +293,7 @@ }, { "cell_type": "markdown", - "id": "5ce32c14", + "id": "72c49d2b", "metadata": { "editable": true }, @@ -204,7 +312,7 @@ }, { "cell_type": "markdown", - "id": "19bf3058", + "id": "40b22809", "metadata": { "editable": true }, @@ -226,7 +334,7 @@ }, { "cell_type": "markdown", - "id": "c0c7a8c3", + "id": "f3907af6", "metadata": { "editable": true }, @@ -249,12 +357,12 @@ }, { "cell_type": "markdown", - "id": "214a436d", + "id": "29627d3a", "metadata": { "editable": true }, "source": [ - "## Example of generative modeling, [taken from Generative Deeep Learning by David Foster](https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html)\n", + "## Example of generative modeling, [taken from Generative Deep Learning by David Foster](https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html)\n", "\n", "\n", "\n", @@ -265,7 +373,7 @@ }, { "cell_type": "markdown", - "id": "50175294", + "id": "6207eb1d", "metadata": { "editable": true }, @@ -291,7 +399,7 @@ }, { "cell_type": "markdown", - "id": "f38079fd", + "id": "3926710a", "metadata": { "editable": true }, @@ -307,7 +415,7 @@ }, { "cell_type": "markdown", - "id": "5831d8e0", + "id": "cd93995e", "metadata": { "editable": true }, @@ -323,7 +431,7 @@ }, { "cell_type": "markdown", - "id": "102b8710", + "id": "b4887da0", "metadata": { "editable": true }, @@ -343,7 +451,7 @@ }, { "cell_type": "markdown", - "id": "6adc6f10", + "id": "1a9f2d39", "metadata": { "editable": true }, @@ -359,120 +467,12 @@ }, { "cell_type": "markdown", - "id": "5f7cd9b2", - "metadata": { - "editable": true - }, - "source": [ - "## Possible paths for the projects\n", - "\n", - "The differential equation path: Here we propose a set of differential\n", - "equations (ordinary and/or partial) to be solved first using neural\n", - "networks (using either your own code or TensorFlow/Pytorch or similar\n", - "libraries). Thereafter we can extend the set of methods for\n", - "solving these equations to recurrent neural networks and autoencoders\n", - "(AE) and/or Generalized Adversarial Networks (GANs). All these\n", - "approaches can be expanded into one large project. This project can\n", - "also be extended into including [Physics informed machine\n", - "learning](https://github.com/maziarraissi/PINNs). Here we can discuss\n", - "neural networks that are trained to solve supervised learning tasks\n", - "while respecting any given law of physics described by general\n", - "nonlinear partial differential equations.\n", - "\n", - "For those interested in mathematical aspects of deep learning, this could also be included." - ] - }, - { - "cell_type": "markdown", - "id": "3978ce4d", - "metadata": { - "editable": true - }, - "source": [ - "## The generative models\n", - "\n", - "This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent\n", - "the lectures. Topics for data sets will be discussed during the lab sessions." - ] - }, - { - "cell_type": "markdown", - "id": "a743d21b", - "metadata": { - "editable": true - }, - "source": [ - "## Paths for projects, writing own codes\n", - "\n", - "The computational path: Here we propose a path where you develop your\n", - "own code for a convolutional or eventually recurrent neural network\n", - "and apply this to data selects of your own selection. The code should\n", - "be object oriented and flexible allowing for eventual extensions by\n", - "including different Loss/Cost functions and other\n", - "functionalities. Feel free to select data sets from those suggested\n", - "below here. This code can also be extended upon by adding for example\n", - "autoencoders. You can compare your own codes with implementations\n", - "using TensorFlow(Keras)/PyTorch or other libraries." - ] - }, - { - "cell_type": "markdown", - "id": "5e0882e0", - "metadata": { - "editable": true - }, - "source": [ - "## The application path\n", - "\n", - "The application path: Here you can use the most relevant method(s)\n", - "(say convolutional neural networks for images) and apply this(these)\n", - "to data sets relevant for your own research." - ] - }, - { - "cell_type": "markdown", - "id": "1c59878d", - "metadata": { - "editable": true - }, - "source": [ - "## Gaussian processes and Bayesian analysis\n", - "\n", - "The Gaussian processes/Bayesian statistics path: [Kernel regression\n", - "(Gaussian processes) and Bayesian\n", - "statistics](https://jenfb.github.io/bkmr/overview.html) are popular\n", - "tools in the machine learning literature. The main idea behind these\n", - "approaches is to flexibly model the relationship between a large\n", - "number of variables and a particular outcome (dependent\n", - "variable). This can form a second part of a project where for example\n", - "standard Kernel regression methods are used on a specific data\n", - "set. Alternatively, participants can opt to work on a large project\n", - "relevant for their own research using gaussian processes and/or\n", - "Bayesian machine Learning." - ] - }, - { - "cell_type": "markdown", - "id": "3410a9f1", - "metadata": { - "editable": true - }, - "source": [ - "## HPC path\n", - "\n", - "Another alternative is to study high-performance computing aspects in\n", - "designing ML codes. This can also be linked with an exploration of\n", - "mathematical aspects of deep learning methods." - ] - }, - { - "cell_type": "markdown", - "id": "5d4a8730", + "id": "b64ee9bb", "metadata": { "editable": true }, "source": [ - "## What are the basic Machine Learning ingredients?\n", + "## Reminder on the basic Machine Learning ingredients\n", "Almost every problem in ML and data science starts with the same ingredients:\n", "* The dataset $\\boldsymbol{x}$ (could be some observable quantity of the system we are studying)\n", "\n", @@ -485,7 +485,7 @@ }, { "cell_type": "markdown", - "id": "716ce7e8", + "id": "29dcd5f3", "metadata": { "editable": true }, @@ -501,7 +501,7 @@ }, { "cell_type": "markdown", - "id": "27f027db", + "id": "0cfeb173", "metadata": { "editable": true }, @@ -513,7 +513,7 @@ }, { "cell_type": "markdown", - "id": "dbb15a86", + "id": "a7544885", "metadata": { "editable": true }, @@ -531,7 +531,7 @@ }, { "cell_type": "markdown", - "id": "413520c7", + "id": "3b0b5d75", "metadata": { "editable": true }, @@ -543,7 +543,7 @@ }, { "cell_type": "markdown", - "id": "435a658e", + "id": "9f923ae6", "metadata": { "editable": true }, @@ -555,7 +555,7 @@ }, { "cell_type": "markdown", - "id": "3b80ca92", + "id": "ebb80924", "metadata": { "editable": true }, @@ -567,7 +567,7 @@ }, { "cell_type": "markdown", - "id": "00b46f1a", + "id": "87b424b3", "metadata": { "editable": true }, @@ -577,7 +577,7 @@ }, { "cell_type": "markdown", - "id": "5367534b", + "id": "6ed02b88", "metadata": { "editable": true }, @@ -589,7 +589,7 @@ }, { "cell_type": "markdown", - "id": "23c73785", + "id": "f83aa963", "metadata": { "editable": true }, @@ -599,7 +599,7 @@ }, { "cell_type": "markdown", - "id": "c8e9053f", + "id": "f23fcbd8", "metadata": { "editable": true }, @@ -611,7 +611,7 @@ }, { "cell_type": "markdown", - "id": "eb37f6a4", + "id": "843db825", "metadata": { "editable": true }, @@ -623,7 +623,7 @@ }, { "cell_type": "markdown", - "id": "7181571b", + "id": "de919013", "metadata": { "editable": true }, @@ -633,7 +633,7 @@ }, { "cell_type": "markdown", - "id": "0132397d", + "id": "7a277936", "metadata": { "editable": true }, @@ -645,7 +645,7 @@ }, { "cell_type": "markdown", - "id": "0e8158e2", + "id": "dfd81ea3", "metadata": { "editable": true }, @@ -655,7 +655,7 @@ }, { "cell_type": "markdown", - "id": "b65715a8", + "id": "14a066ea", "metadata": { "editable": true }, @@ -667,7 +667,7 @@ }, { "cell_type": "markdown", - "id": "82a710e7", + "id": "9d1cdf74", "metadata": { "editable": true }, @@ -679,7 +679,7 @@ }, { "cell_type": "markdown", - "id": "7d0b3842", + "id": "a411b7a9", "metadata": { "editable": true }, @@ -689,7 +689,7 @@ }, { "cell_type": "markdown", - "id": "40abfdcd", + "id": "26022ac3", "metadata": { "editable": true }, @@ -702,7 +702,7 @@ }, { "cell_type": "markdown", - "id": "55c44fdf", + "id": "8c97f768", "metadata": { "editable": true }, @@ -712,7 +712,7 @@ }, { "cell_type": "markdown", - "id": "f1294bcf", + "id": "d3d8f152", "metadata": { "editable": true }, @@ -724,7 +724,7 @@ }, { "cell_type": "markdown", - "id": "ee47e84d", + "id": "1a014d0e", "metadata": { "editable": true }, @@ -739,7 +739,7 @@ }, { "cell_type": "markdown", - "id": "898a5b59", + "id": "35b8c643", "metadata": { "editable": true }, @@ -752,7 +752,7 @@ }, { "cell_type": "markdown", - "id": "70970d12", + "id": "c4af4ffb", "metadata": { "editable": true }, @@ -764,7 +764,7 @@ }, { "cell_type": "markdown", - "id": "566e03af", + "id": "42451e95", "metadata": { "editable": true }, @@ -776,7 +776,7 @@ }, { "cell_type": "markdown", - "id": "457a4e36", + "id": "0ae6abcf", "metadata": { "editable": true }, @@ -788,7 +788,7 @@ }, { "cell_type": "markdown", - "id": "d11bb124", + "id": "63448ab1", "metadata": { "editable": true }, @@ -798,7 +798,7 @@ }, { "cell_type": "markdown", - "id": "e11d31f7", + "id": "e6af7dfb", "metadata": { "editable": true }, @@ -811,7 +811,7 @@ }, { "cell_type": "markdown", - "id": "77171dac", + "id": "5e735518", "metadata": { "editable": true }, @@ -822,7 +822,7 @@ }, { "cell_type": "markdown", - "id": "a6abe6e0", + "id": "6a33db8e", "metadata": { "editable": true }, @@ -834,7 +834,7 @@ }, { "cell_type": "markdown", - "id": "e40d9e85", + "id": "d194719f", "metadata": { "editable": true }, @@ -845,7 +845,7 @@ }, { "cell_type": "markdown", - "id": "53f2e976", + "id": "f1ba5ef0", "metadata": { "editable": true }, @@ -859,7 +859,7 @@ }, { "cell_type": "markdown", - "id": "b65287b1", + "id": "418a5ed9", "metadata": { "editable": true }, @@ -869,7 +869,7 @@ }, { "cell_type": "markdown", - "id": "42895bb8", + "id": "3ea79bd7", "metadata": { "editable": true }, @@ -881,7 +881,7 @@ }, { "cell_type": "markdown", - "id": "575c91fe", + "id": "a9423235", "metadata": { "editable": true }, @@ -891,7 +891,7 @@ }, { "cell_type": "markdown", - "id": "ff9de4da", + "id": "39309503", "metadata": { "editable": true }, @@ -905,7 +905,7 @@ }, { "cell_type": "markdown", - "id": "18b6baee", + "id": "5a74f803", "metadata": { "editable": true }, @@ -917,7 +917,7 @@ }, { "cell_type": "markdown", - "id": "0e3cb40d", + "id": "2217d3d0", "metadata": { "editable": true }, @@ -928,7 +928,7 @@ }, { "cell_type": "markdown", - "id": "460e9dc9", + "id": "cb9e4fef", "metadata": { "editable": true }, @@ -942,7 +942,7 @@ }, { "cell_type": "markdown", - "id": "79714009", + "id": "0d08a186", "metadata": { "editable": true }, @@ -953,7 +953,7 @@ }, { "cell_type": "markdown", - "id": "9099b9e6", + "id": "97b4504a", "metadata": { "editable": true }, @@ -965,7 +965,7 @@ }, { "cell_type": "markdown", - "id": "f62d85e8", + "id": "fa03aebd", "metadata": { "editable": true }, @@ -975,7 +975,7 @@ }, { "cell_type": "markdown", - "id": "083870b3", + "id": "51693a86", "metadata": { "editable": true }, @@ -987,7 +987,7 @@ }, { "cell_type": "markdown", - "id": "f7dbe771", + "id": "7517b452", "metadata": { "editable": true }, @@ -997,7 +997,7 @@ }, { "cell_type": "markdown", - "id": "1521def5", + "id": "cb03bf6b", "metadata": { "editable": true }, @@ -1012,7 +1012,7 @@ }, { "cell_type": "markdown", - "id": "94c5cac6", + "id": "fcef09bc", "metadata": { "editable": true }, @@ -1024,7 +1024,7 @@ }, { "cell_type": "markdown", - "id": "b6c8888d", + "id": "24d062f9", "metadata": { "editable": true }, @@ -1035,7 +1035,7 @@ }, { "cell_type": "markdown", - "id": "989f68ed", + "id": "1b9eb817", "metadata": { "editable": true }, @@ -1047,7 +1047,7 @@ }, { "cell_type": "markdown", - "id": "df06c46a", + "id": "6bdd47f9", "metadata": { "editable": true }, @@ -1058,7 +1058,7 @@ }, { "cell_type": "markdown", - "id": "e579cc48", + "id": "3c24ee93", "metadata": { "editable": true }, @@ -1070,7 +1070,7 @@ }, { "cell_type": "markdown", - "id": "b4b35959", + "id": "81a1996c", "metadata": { "editable": true }, @@ -1080,7 +1080,7 @@ }, { "cell_type": "markdown", - "id": "4d11297b", + "id": "64071d26", "metadata": { "editable": true }, @@ -1092,7 +1092,7 @@ }, { "cell_type": "markdown", - "id": "e1a915af", + "id": "ed893fc2", "metadata": { "editable": true }, @@ -1102,7 +1102,7 @@ }, { "cell_type": "markdown", - "id": "f57c68c2", + "id": "206da3b1", "metadata": { "editable": true }, @@ -1114,7 +1114,7 @@ }, { "cell_type": "markdown", - "id": "dd9c4c0b", + "id": "eaa4f630", "metadata": { "editable": true }, @@ -1124,7 +1124,7 @@ }, { "cell_type": "markdown", - "id": "fcf86c8b", + "id": "9a3b722f", "metadata": { "editable": true }, @@ -1141,7 +1141,7 @@ }, { "cell_type": "markdown", - "id": "38c3be34", + "id": "494d75ea", "metadata": { "editable": true }, @@ -1157,7 +1157,7 @@ }, { "cell_type": "markdown", - "id": "29a3351c", + "id": "a0b5ce27", "metadata": { "editable": true }, @@ -1173,7 +1173,7 @@ }, { "cell_type": "markdown", - "id": "7fd03ede", + "id": "5257a3ee", "metadata": { "editable": true }, @@ -1197,7 +1197,7 @@ }, { "cell_type": "markdown", - "id": "c2dc7dd1", + "id": "50fc6f0d", "metadata": { "editable": true }, @@ -1213,7 +1213,7 @@ }, { "cell_type": "markdown", - "id": "894ff6d3", + "id": "cb1cc6c0", "metadata": { "editable": true }, @@ -1228,7 +1228,7 @@ }, { "cell_type": "markdown", - "id": "62d5f483", + "id": "704acee9", "metadata": { "editable": true }, @@ -1252,7 +1252,7 @@ }, { "cell_type": "markdown", - "id": "139cc5f0", + "id": "b7ea77c8", "metadata": { "editable": true }, @@ -1263,7 +1263,7 @@ }, { "cell_type": "markdown", - "id": "6ca3e375", + "id": "39d6fefa", "metadata": { "editable": true }, @@ -1275,7 +1275,7 @@ }, { "cell_type": "markdown", - "id": "5c865846", + "id": "81bbe6ad", "metadata": { "editable": true }, @@ -1285,7 +1285,7 @@ }, { "cell_type": "markdown", - "id": "ae762ebe", + "id": "62ce94f3", "metadata": { "editable": true }, @@ -1297,7 +1297,7 @@ }, { "cell_type": "markdown", - "id": "1126e139", + "id": "7a34282f", "metadata": { "editable": true }, @@ -1307,7 +1307,7 @@ }, { "cell_type": "markdown", - "id": "592fa452", + "id": "522f80ba", "metadata": { "editable": true }, @@ -1324,7 +1324,7 @@ }, { "cell_type": "markdown", - "id": "689f9ffd", + "id": "db8755cf", "metadata": { "editable": true }, @@ -1340,7 +1340,7 @@ }, { "cell_type": "markdown", - "id": "197bc3e1", + "id": "972cac82", "metadata": { "editable": true }, @@ -1352,7 +1352,7 @@ }, { "cell_type": "markdown", - "id": "e7ce9275", + "id": "06f4d2cf", "metadata": { "editable": true }, @@ -1362,7 +1362,7 @@ }, { "cell_type": "markdown", - "id": "f52af1de", + "id": "56600d5c", "metadata": { "editable": true }, @@ -1376,7 +1376,7 @@ }, { "cell_type": "markdown", - "id": "f97fd295", + "id": "ec029770", "metadata": { "editable": true }, @@ -1388,7 +1388,7 @@ }, { "cell_type": "markdown", - "id": "7cff5293", + "id": "929f1262", "metadata": { "editable": true }, @@ -1402,7 +1402,7 @@ }, { "cell_type": "markdown", - "id": "c99aa27b", + "id": "50e597c1", "metadata": { "editable": true }, @@ -1414,7 +1414,7 @@ }, { "cell_type": "markdown", - "id": "d40db488", + "id": "97fdf0be", "metadata": { "editable": true }, @@ -1424,7 +1424,7 @@ }, { "cell_type": "markdown", - "id": "f9391369", + "id": "3c5f16ae", "metadata": { "editable": true }, @@ -1436,7 +1436,7 @@ }, { "cell_type": "markdown", - "id": "8c0f2148", + "id": "0c67df3a", "metadata": { "editable": true }, @@ -1446,7 +1446,7 @@ }, { "cell_type": "markdown", - "id": "bf80200e", + "id": "eb065eb4", "metadata": { "editable": true }, @@ -1458,7 +1458,7 @@ }, { "cell_type": "markdown", - "id": "6e1b6f1e", + "id": "d3e2e715", "metadata": { "editable": true }, @@ -1477,7 +1477,7 @@ }, { "cell_type": "markdown", - "id": "533de579", + "id": "c6b84221", "metadata": { "editable": true }, @@ -1490,7 +1490,7 @@ }, { "cell_type": "markdown", - "id": "c26cb04f", + "id": "5d6de6a8", "metadata": { "editable": true }, @@ -1500,7 +1500,7 @@ }, { "cell_type": "markdown", - "id": "52a96687", + "id": "884f06e5", "metadata": { "editable": true }, @@ -1512,7 +1512,7 @@ }, { "cell_type": "markdown", - "id": "22ed5532", + "id": "6cb0b614", "metadata": { "editable": true }, @@ -1531,7 +1531,7 @@ }, { "cell_type": "markdown", - "id": "59eb29ee", + "id": "47a6fa2c", "metadata": { "editable": true }, @@ -1553,7 +1553,7 @@ }, { "cell_type": "markdown", - "id": "80be220c", + "id": "3e652cff", "metadata": { "editable": true }, @@ -1565,7 +1565,7 @@ }, { "cell_type": "markdown", - "id": "b0e77b3a", + "id": "fc7c0b8c", "metadata": { "editable": true }, @@ -1577,7 +1577,7 @@ }, { "cell_type": "markdown", - "id": "9702e0a5", + "id": "34ec95d3", "metadata": { "editable": true }, @@ -1592,7 +1592,7 @@ }, { "cell_type": "markdown", - "id": "3e210930", + "id": "cead29bf", "metadata": { "editable": true }, @@ -1610,7 +1610,7 @@ }, { "cell_type": "markdown", - "id": "0537cb26", + "id": "7d9cc184", "metadata": { "editable": true }, @@ -1630,7 +1630,7 @@ }, { "cell_type": "markdown", - "id": "640e7a49", + "id": "f2e10b39", "metadata": { "editable": true }, @@ -1651,7 +1651,7 @@ }, { "cell_type": "markdown", - "id": "e188958c", + "id": "e0f7c5b2", "metadata": { "editable": true }, @@ -1663,7 +1663,7 @@ }, { "cell_type": "markdown", - "id": "3a1de38f", + "id": "9c495913", "metadata": { "editable": true }, @@ -1675,7 +1675,7 @@ }, { "cell_type": "markdown", - "id": "ce5c22b6", + "id": "ec2f2aea", "metadata": { "editable": true }, @@ -1685,7 +1685,7 @@ }, { "cell_type": "markdown", - "id": "a8d72e5e", + "id": "bfb380a2", "metadata": { "editable": true }, @@ -1697,7 +1697,7 @@ }, { "cell_type": "markdown", - "id": "497eb132", + "id": "c0c28844", "metadata": { "editable": true }, @@ -1707,7 +1707,7 @@ }, { "cell_type": "markdown", - "id": "3b13bf50", + "id": "5d07baf0", "metadata": { "editable": true }, @@ -1719,7 +1719,7 @@ }, { "cell_type": "markdown", - "id": "8b2275c7", + "id": "ce27147c", "metadata": { "editable": true }, @@ -1729,7 +1729,7 @@ }, { "cell_type": "markdown", - "id": "d69f29da", + "id": "f6ffb646", "metadata": { "editable": true }, @@ -1741,7 +1741,7 @@ }, { "cell_type": "markdown", - "id": "d9d62fdf", + "id": "0758d584", "metadata": { "editable": true }, @@ -1755,7 +1755,7 @@ }, { "cell_type": "markdown", - "id": "81e67bf9", + "id": "d0bab345", "metadata": { "editable": true }, @@ -1774,7 +1774,7 @@ }, { "cell_type": "markdown", - "id": "3ffa4fab", + "id": "382b36a0", "metadata": { "editable": true }, @@ -1784,7 +1784,7 @@ }, { "cell_type": "markdown", - "id": "6c63148b", + "id": "ce31f5d6", "metadata": { "editable": true }, @@ -1796,7 +1796,7 @@ }, { "cell_type": "markdown", - "id": "0885af80", + "id": "e28bdeb0", "metadata": { "editable": true }, @@ -1815,7 +1815,7 @@ }, { "cell_type": "markdown", - "id": "13eca820", + "id": "14a118ed", "metadata": { "editable": true }, @@ -1825,7 +1825,7 @@ }, { "cell_type": "markdown", - "id": "81fe3854", + "id": "75bc955e", "metadata": { "editable": true }, @@ -1838,7 +1838,7 @@ }, { "cell_type": "markdown", - "id": "ca3bfee7", + "id": "c55fa6d8", "metadata": { "editable": true }, @@ -1848,7 +1848,7 @@ }, { "cell_type": "markdown", - "id": "30da8e40", + "id": "7a115a08", "metadata": { "editable": true }, @@ -1859,7 +1859,7 @@ }, { "cell_type": "markdown", - "id": "f633fb21", + "id": "8a73fa5f", "metadata": { "editable": true }, @@ -1871,7 +1871,7 @@ }, { "cell_type": "markdown", - "id": "39403aa2", + "id": "0c54bac6", "metadata": { "editable": true }, @@ -1881,7 +1881,7 @@ }, { "cell_type": "markdown", - "id": "0cffc47a", + "id": "2ba00df8", "metadata": { "editable": true }, @@ -1906,7 +1906,7 @@ }, { "cell_type": "markdown", - "id": "1d256940", + "id": "847b049e", "metadata": { "editable": true }, @@ -1934,7 +1934,7 @@ }, { "cell_type": "markdown", - "id": "97acfaee", + "id": "07bc8dfd", "metadata": { "editable": true }, @@ -1960,7 +1960,7 @@ }, { "cell_type": "markdown", - "id": "88b2cd39", + "id": "d0948364", "metadata": { "editable": true }, @@ -1972,7 +1972,7 @@ }, { "cell_type": "markdown", - "id": "2579370c", + "id": "86e80bae", "metadata": { "editable": true }, @@ -1984,7 +1984,7 @@ }, { "cell_type": "markdown", - "id": "17dd7f8c", + "id": "2f1caf78", "metadata": { "editable": true }, @@ -1994,7 +1994,7 @@ }, { "cell_type": "markdown", - "id": "7f9e08ea", + "id": "7bb01594", "metadata": { "editable": true }, @@ -2006,7 +2006,7 @@ }, { "cell_type": "markdown", - "id": "1a98428c", + "id": "ce3f872f", "metadata": { "editable": true }, @@ -2018,7 +2018,7 @@ }, { "cell_type": "markdown", - "id": "460f0d43", + "id": "c025b821", "metadata": { "editable": true }, @@ -2030,7 +2030,7 @@ }, { "cell_type": "markdown", - "id": "b25f2a9e", + "id": "7e82ea13", "metadata": { "editable": true }, @@ -2040,7 +2040,7 @@ }, { "cell_type": "markdown", - "id": "e8b701a2", + "id": "f65abf0f", "metadata": { "editable": true }, @@ -2052,7 +2052,7 @@ }, { "cell_type": "markdown", - "id": "c4cf2770", + "id": "bc12a4cb", "metadata": { "editable": true }, @@ -2062,7 +2062,7 @@ }, { "cell_type": "markdown", - "id": "44a9ee86", + "id": "0ccc6d31", "metadata": { "editable": true }, @@ -2074,7 +2074,7 @@ }, { "cell_type": "markdown", - "id": "a35436e7", + "id": "ee9d6ebf", "metadata": { "editable": true }, @@ -2086,7 +2086,7 @@ }, { "cell_type": "markdown", - "id": "c7563ad7", + "id": "a240e4f6", "metadata": { "editable": true }, @@ -2098,7 +2098,7 @@ }, { "cell_type": "markdown", - "id": "67c803c7", + "id": "d24054ff", "metadata": { "editable": true }, @@ -2108,7 +2108,7 @@ }, { "cell_type": "markdown", - "id": "46be8e16", + "id": "49e6bb24", "metadata": { "editable": true }, @@ -2120,7 +2120,7 @@ }, { "cell_type": "markdown", - "id": "29a3af6b", + "id": "4cb81ee6", "metadata": { "editable": true }, @@ -2131,7 +2131,7 @@ }, { "cell_type": "markdown", - "id": "791c7ee1", + "id": "168d234e", "metadata": { "editable": true }, @@ -2143,7 +2143,7 @@ }, { "cell_type": "markdown", - "id": "5d86ec49", + "id": "48cc4d89", "metadata": { "editable": true }, @@ -2153,7 +2153,7 @@ }, { "cell_type": "markdown", - "id": "f6f5b5c4", + "id": "8c3d01d0", "metadata": { "editable": true }, @@ -2165,7 +2165,7 @@ }, { "cell_type": "markdown", - "id": "3120fb40", + "id": "07d56919", "metadata": { "editable": true }, @@ -2175,7 +2175,7 @@ }, { "cell_type": "markdown", - "id": "5dcb2d7a", + "id": "b8b951c3", "metadata": { "editable": true }, @@ -2187,7 +2187,7 @@ }, { "cell_type": "markdown", - "id": "b05f3e39", + "id": "bcc5c3c5", "metadata": { "editable": true }, @@ -2209,7 +2209,7 @@ }, { "cell_type": "markdown", - "id": "8a8605e1", + "id": "2004a45c", "metadata": { "editable": true }, @@ -2236,7 +2236,7 @@ }, { "cell_type": "markdown", - "id": "06b2e0b3", + "id": "aaf0e252", "metadata": { "editable": true }, @@ -2253,7 +2253,7 @@ }, { "cell_type": "markdown", - "id": "9c0ab15c", + "id": "b211a5e9", "metadata": { "editable": true }, @@ -2265,7 +2265,7 @@ }, { "cell_type": "markdown", - "id": "4f35e91f", + "id": "475e7f01", "metadata": { "editable": true }, @@ -2285,7 +2285,7 @@ }, { "cell_type": "markdown", - "id": "7955334a", + "id": "5f894e44", "metadata": { "editable": true }, @@ -2314,7 +2314,7 @@ }, { "cell_type": "markdown", - "id": "5e647027", + "id": "17509188", "metadata": { "editable": true }, @@ -2328,7 +2328,7 @@ }, { "cell_type": "markdown", - "id": "3773a1a5", + "id": "06c212bd", "metadata": { "editable": true }, @@ -2345,7 +2345,7 @@ }, { "cell_type": "markdown", - "id": "8aea687b", + "id": "6eca6c03", "metadata": { "editable": true }, @@ -2357,7 +2357,7 @@ }, { "cell_type": "markdown", - "id": "2e1251e5", + "id": "535143a4", "metadata": { "editable": true }, @@ -2369,7 +2369,7 @@ }, { "cell_type": "markdown", - "id": "88596be5", + "id": "fbdc270a", "metadata": { "editable": true }, @@ -2386,7 +2386,7 @@ }, { "cell_type": "markdown", - "id": "6610526e", + "id": "d82e0ed4", "metadata": { "editable": true }, @@ -2398,7 +2398,7 @@ }, { "cell_type": "markdown", - "id": "003e8528", + "id": "3ac2a03e", "metadata": { "editable": true }, @@ -2411,7 +2411,7 @@ }, { "cell_type": "markdown", - "id": "f1c7a080", + "id": "36c61468", "metadata": { "editable": true }, @@ -2423,7 +2423,7 @@ }, { "cell_type": "markdown", - "id": "973d2978", + "id": "f06cc3f3", "metadata": { "editable": true }, @@ -2439,7 +2439,7 @@ }, { "cell_type": "markdown", - "id": "e83ed461", + "id": "4972952e", "metadata": { "editable": true }, @@ -2451,7 +2451,7 @@ }, { "cell_type": "markdown", - "id": "e5be1631", + "id": "57ba633f", "metadata": { "editable": true }, @@ -2463,7 +2463,7 @@ }, { "cell_type": "markdown", - "id": "bc4aeb11", + "id": "8aee9a12", "metadata": { "editable": true }, @@ -2475,7 +2475,7 @@ }, { "cell_type": "markdown", - "id": "18408f4b", + "id": "22507011", "metadata": { "editable": true }, @@ -2485,7 +2485,7 @@ }, { "cell_type": "markdown", - "id": "5a3eacfe", + "id": "3ff110e2", "metadata": { "editable": true }, @@ -2497,7 +2497,7 @@ }, { "cell_type": "markdown", - "id": "3fc53083", + "id": "f0599b98", "metadata": { "editable": true }, @@ -2507,7 +2507,7 @@ }, { "cell_type": "markdown", - "id": "9efb4490", + "id": "e6078e70", "metadata": { "editable": true }, @@ -2519,7 +2519,7 @@ }, { "cell_type": "markdown", - "id": "bcc24129", + "id": "8e767777", "metadata": { "editable": true }, @@ -2533,7 +2533,7 @@ }, { "cell_type": "markdown", - "id": "53f545e1", + "id": "4eb7a37f", "metadata": { "editable": true }, @@ -2545,7 +2545,7 @@ }, { "cell_type": "markdown", - "id": "c596eb20", + "id": "bf68e99e", "metadata": { "editable": true }, @@ -2555,7 +2555,7 @@ }, { "cell_type": "markdown", - "id": "082f02b5", + "id": "a1290070", "metadata": { "editable": true }, @@ -2567,7 +2567,7 @@ }, { "cell_type": "markdown", - "id": "e7e622e7", + "id": "841a2f3e", "metadata": { "editable": true }, @@ -2577,7 +2577,7 @@ }, { "cell_type": "markdown", - "id": "3ed43a59", + "id": "82905702", "metadata": { "editable": true }, @@ -2589,7 +2589,7 @@ }, { "cell_type": "markdown", - "id": "b5092530", + "id": "39ad3127", "metadata": { "editable": true }, @@ -2601,7 +2601,7 @@ }, { "cell_type": "markdown", - "id": "71afc34e", + "id": "0b699aa7", "metadata": { "editable": true }, @@ -2613,7 +2613,7 @@ }, { "cell_type": "markdown", - "id": "4e06088e", + "id": "d53c758f", "metadata": { "editable": true }, @@ -2623,7 +2623,7 @@ }, { "cell_type": "markdown", - "id": "67b572ff", + "id": "1febcd97", "metadata": { "editable": true }, @@ -2635,7 +2635,7 @@ }, { "cell_type": "markdown", - "id": "7f2cb56d", + "id": "ac3e8457", "metadata": { "editable": true }, @@ -2645,7 +2645,7 @@ }, { "cell_type": "markdown", - "id": "30befc68", + "id": "bf2247be", "metadata": { "editable": true }, @@ -2657,7 +2657,7 @@ }, { "cell_type": "markdown", - "id": "e9ed2418", + "id": "d9b9fff7", "metadata": { "editable": true }, @@ -2675,7 +2675,7 @@ }, { "cell_type": "markdown", - "id": "3fd46823", + "id": "49888af9", "metadata": { "editable": true }, @@ -2693,7 +2693,7 @@ }, { "cell_type": "markdown", - "id": "32890c10", + "id": "b69de3e4", "metadata": { "editable": true }, @@ -2705,7 +2705,7 @@ }, { "cell_type": "markdown", - "id": "7b90b75f", + "id": "de8ed7bf", "metadata": { "editable": true }, @@ -2715,7 +2715,7 @@ }, { "cell_type": "markdown", - "id": "57702a47", + "id": "ce7032a7", "metadata": { "editable": true }, @@ -2727,7 +2727,7 @@ }, { "cell_type": "markdown", - "id": "5c1faccd", + "id": "dbd0c464", "metadata": { "editable": true }, @@ -2739,7 +2739,7 @@ }, { "cell_type": "markdown", - "id": "6f8a97c2", + "id": "3014ec3d", "metadata": { "editable": true }, @@ -2751,7 +2751,7 @@ }, { "cell_type": "markdown", - "id": "60dbaf5f", + "id": "c5a5ace6", "metadata": { "editable": true }, @@ -2761,7 +2761,7 @@ }, { "cell_type": "markdown", - "id": "1bcfd8b5", + "id": "a2f371f0", "metadata": { "editable": true }, @@ -2773,7 +2773,7 @@ }, { "cell_type": "markdown", - "id": "d5c2881f", + "id": "e28583bc", "metadata": { "editable": true }, @@ -2783,7 +2783,7 @@ }, { "cell_type": "markdown", - "id": "4a4a1ee2", + "id": "d9a81fc4", "metadata": { "editable": true }, @@ -2795,7 +2795,7 @@ }, { "cell_type": "markdown", - "id": "f9de3e2e", + "id": "19e66bb9", "metadata": { "editable": true }, @@ -2813,7 +2813,7 @@ }, { "cell_type": "markdown", - "id": "7cfbf867", + "id": "fe9aa626", "metadata": { "editable": true }, @@ -2823,7 +2823,7 @@ }, { "cell_type": "markdown", - "id": "59feaf54", + "id": "0ea4c73d", "metadata": { "editable": true }, @@ -2841,7 +2841,7 @@ }, { "cell_type": "markdown", - "id": "1dfe0f09", + "id": "9667f728", "metadata": { "editable": true }, @@ -2851,7 +2851,7 @@ }, { "cell_type": "markdown", - "id": "afa7cd6f", + "id": "2247f7e7", "metadata": { "editable": true }, @@ -2869,7 +2869,7 @@ }, { "cell_type": "markdown", - "id": "4dc55224", + "id": "3ae364dc", "metadata": { "editable": true }, @@ -2881,7 +2881,7 @@ }, { "cell_type": "markdown", - "id": "fee85101", + "id": "786ceac4", "metadata": { "editable": true }, @@ -2893,7 +2893,7 @@ }, { "cell_type": "markdown", - "id": "72650035", + "id": "c77a8676", "metadata": { "editable": true }, @@ -2903,7 +2903,7 @@ }, { "cell_type": "markdown", - "id": "39acbc95", + "id": "8adb5956", "metadata": { "editable": true }, @@ -2915,7 +2915,7 @@ }, { "cell_type": "markdown", - "id": "6a4d6203", + "id": "f99747ff", "metadata": { "editable": true }, @@ -2927,7 +2927,7 @@ }, { "cell_type": "markdown", - "id": "f77d408e", + "id": "7428b34b", "metadata": { "editable": true }, @@ -2937,7 +2937,7 @@ }, { "cell_type": "markdown", - "id": "f1086f33", + "id": "b8a1fd30", "metadata": { "editable": true }, @@ -2949,7 +2949,7 @@ }, { "cell_type": "markdown", - "id": "6b1b39f0", + "id": "8aef0917", "metadata": { "editable": true }, @@ -2959,7 +2959,7 @@ }, { "cell_type": "markdown", - "id": "45b0215a", + "id": "1b1c0bf0", "metadata": { "editable": true }, @@ -2971,7 +2971,7 @@ }, { "cell_type": "markdown", - "id": "db70cea8", + "id": "0ba9ebec", "metadata": { "editable": true }, @@ -2983,7 +2983,7 @@ }, { "cell_type": "markdown", - "id": "a1985c70", + "id": "00f467a8", "metadata": { "editable": true }, @@ -3004,7 +3004,7 @@ }, { "cell_type": "markdown", - "id": "5cf1ad9c", + "id": "6f104a37", "metadata": { "editable": true }, @@ -3016,7 +3016,7 @@ }, { "cell_type": "markdown", - "id": "fcccdb63", + "id": "d15fe0e6", "metadata": { "editable": true }, @@ -3028,7 +3028,7 @@ }, { "cell_type": "markdown", - "id": "61896755", + "id": "ef8e62a5", "metadata": { "editable": true }, @@ -3038,7 +3038,7 @@ }, { "cell_type": "markdown", - "id": "41774453", + "id": "01df9b83", "metadata": { "editable": true }, @@ -3050,7 +3050,7 @@ }, { "cell_type": "markdown", - "id": "8d11de07", + "id": "b6d6dd53", "metadata": { "editable": true }, @@ -3064,7 +3064,7 @@ }, { "cell_type": "markdown", - "id": "1f4be3ad", + "id": "ad97fad3", "metadata": { "editable": true }, @@ -3076,7 +3076,7 @@ }, { "cell_type": "markdown", - "id": "225d9d1a", + "id": "807ff58e", "metadata": { "editable": true }, @@ -3088,7 +3088,7 @@ }, { "cell_type": "markdown", - "id": "9f984415", + "id": "78ce49fc", "metadata": { "editable": true }, @@ -3098,7 +3098,7 @@ }, { "cell_type": "markdown", - "id": "a1371ae2", + "id": "3f9285b5", "metadata": { "editable": true }, @@ -3110,7 +3110,7 @@ }, { "cell_type": "markdown", - "id": "502224fb", + "id": "d26df366", "metadata": { "editable": true }, @@ -3122,7 +3122,7 @@ }, { "cell_type": "markdown", - "id": "48aaf38a", + "id": "5c04c58b", "metadata": { "editable": true }, @@ -3132,7 +3132,7 @@ }, { "cell_type": "markdown", - "id": "e205aa5d", + "id": "079f45d8", "metadata": { "editable": true }, @@ -3144,7 +3144,7 @@ }, { "cell_type": "markdown", - "id": "21ed57c1", + "id": "fda3a547", "metadata": { "editable": true }, diff --git a/doc/pub/week1/pdf/week1.pdf b/doc/pub/week1/pdf/week1.pdf index 04aefae08031f19d8cf794604480c20d566eca75..f8c11c5e85c740de2d2e0c91a46bfba3c1e69e31 100644 GIT binary patch delta 63892 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�lW?+(0kfeW+QwyX*hl*O`S}Mj$$CtAneRO%O{y+;w=MqkS9r9Km z)yKS)=0ntR7iJ_Z=Kq!1Z6I8r=iTfskty08Fr1%`h{!?_`F9S-`4BHT4&MlkHf#IV zBeq_(seA#u&5AL{1$8G6(Xz&r9Pl`8PhmJBd2UocYr-Imp;`Bb$qrl4o{I(xMrw9L zsbS7$dE3I`YJ6)jr!c(2RK=LYFlvYx9p1iKMLb{U&R&GJ!F1=G-`8JR;p#TX={Q3| zVB|{K0{D}R-Vv{(o?pY~S&72$j4z5Vv(c>GvFat|F@>^%m@7EEx}4ajMVH|WYf4Zi z`f~11rQ2xwbhl0C(TZ|J@xz~Z3A=VD$jB;~>s-GY?qSSp1TUP2+K@@7RyY+n;zi#6%{QK@Bh_T zY@BR7K+=Nm`by8haeWxgf4OF*g^EW0@=3}Bqc)q5)gcQ@|q~v#brML$G zOe-fdW+amTRn6{~ZrY!kn#f^i-#Dljxq?dysk(~41yg`4=-ZL zNeAJrNO#4tq=ct%#Dw3v4-I0df!3xeLdBY^#~L!A1Q?Hq)&!I7uqgAx@Ig+3e#EwO zR-b|r4Ro24IW40bvj4?&7-0M>GXqa$TMBNeN{fJuwxx%cpTdBFK-zVTZ|S# zT133?L&mi4y0tjX8HX-K65LNZ&_X~*D^|y$3^lE4b}mZ?EqSa!WC@gS168mLu>tEE zO!{Yb9@8%j&zb0!mv16@kL^NpEOw(|2W?74v^KXTrx!?v$`8=MibKUV4ptL^gQk+ z)#KdHNBM_#V@EIq00SykN{QNyIRiXh0V#?3ca6}{w{(*gtZcJ0*M@!>vC(HP@v&!Y z%G-R35jyooerCkH4m9-S$i5_GXmbIlB4+9PduwGv(fHVjXg&!i%}cXs0ewQMvt|CD z*GEP(sHA<7%&J4TXS2uic=f^<@tSTy2>9S^TjO_NKZTYw(%*~9<$Ins$`5>Q00AmU z^YzUm!b3H?+&7?1D6zSt1E3}0Zm|Sx2$W=Vc$72Z?bXe6q8p->0Dnypi+8^9o&3Ix)95|!Eg4G>3HO3(Z3p^0kd1vs~Y01=)lP& zKeO*m$f%*Q@wxvqREgQ@YIJC$oEIO9@s>C@De>%$VE)tlj$l6AUndrrvWYgr7^x@U zoMu(GJ+_2Z1HWRFSu+DT7`G2&?g2CUj3~>$e-s&QgGA*Ah*<~Ni16ua8RREJ5;8!2UxyAGYp28Ds9n5# z$`{nfqz960@%9QbHD!||!7VFqLYBT{$a*6x^kB|ww%x{F*B_|afvLL**Vs;7+$1rc zsLoV9T1BFhHeXdW&9HOdtS#*DQq=K=&)CveXJ`T_%yk3I`@nO{jqUEf_m0Ex*}CET zmQo{L-5#{`YXP)_YOV*)9kGrqJNTLt?ZF$}rf?6Srf`c-&P6qOER&VIry@CACQg1c zvf3RPG&h=>fs8PZ@4iMU81-)DNRA!0%5jx)y0|1aK9&_lBb3&lxS69gjnTEr5~ChV zuX7^328!pz46C?s#zx%=bkmKyWl>d@@r*$}Z zrB3A+fVaSKg9KIXu(ezH#N z>l*}}o!yZt0=eYLye8Z!_?8(@Z7&79pG|m~%BL7qMnLM;BGqq!;BWeXW93D+s87FK z+opHIgalZgjn3asF3HRCwhcqW50F)Wqo9^{u?i@TA+IjO;Ij{ABxN`3P z(p9S#bztTMT^a$P;1u&Yxfy?AQM;-Jb%UYf%Yb5khm*gH+2uM_L}SPb1C;0HHfYT#V;NVDnsQ88wJh zpY(?$WtZf%LkNjU+>4p-4U$XS=xTZ$-hj2=>2c|jD(sDRgG3wuP_0gRsteUl4wskq z5ZQf9MPx=Wh;n6r@e3+W417G7OeB)d`5bWw_7G7XFkH$CL3zeYrj@?1{H0IC1Ajg= zP#%f#jRe$+RM(!^Nd;9)q)9-t0XkFhl*=_W2*VB-|b^amvA z7aVpfIw*Gy-jxNnKr@%_ZRZfMi}!u9MsH&rSb#YqJswZ3qd(%pJD8h)@!$gTFA1cxMW|yq|dpz$VjceKE+PtpkY*tcHr^UIxAunqG(1W`*0Q7=BJ=Wno0|DX0E< zKoOjfq;*O_%y6qPO0ni_ZH*>vf04?_Hd6m%Hu`Ho#YO06pHf4iDSzbbFTh5?N24V_ z-}5U|@Q+#S2USwfC#pHOMQtUfhFL^k&9~8i6ct@XM_w)uHl}mB6Q^RX`Au00SshW4 z`(;N>z}&sQPI7&G-07aU34iIqv3Qyf6pCT4cxlBiUyvgQti-Z=y!dAek{yWAFHo!O z)}a5l$ON2GCWDBWw;=jP{Eg%r={K@(kVn|ltA%heD(|S6Dmy*B z{DqYPTM}k6#{14!(m7INNk>i6x5i@qM}nWKiqa%bbg*8R{UpX5&vl%H)Qm;ICfh2cTDtsX zG+CJf+#sby)L2$;!fvM6>_;D)1&g}g@#!cGL&y*-fy>kyK?56Fht)kOt+DWzI{XABRY~j3n(>a619qFeM+&Pe>cQe|ored_P;@NM_GdpJzzf zY+-5CE59qHW<)Fl?O{m~15n7k;zAQexP;^5H1JAuIJnqQPFGz~oN=B?xIGG2Bm}(U zeS&m^nQWkWiv@rwULoFDYIuV^RS z4?DUaxiGNUI9vj^jIuwwNe00xa?H$~M-76W1_z4~5gK4KJL`l(Kotbx?87X7+CXR1??L($m$+1amM@KKV&J?D;W?0IJ&V;q)F!p$|;s-LzU-JQNM4J zyvh0?F-ewUO1?>?n(BMrJ5JF}R8NiBY;_g9X8^E`94J=`yYAi@%rB55>VIS$R z;uzFQvGdfSiJE}e)HwbL5Wx58RmAXs{n7Uv0T42cyHbbkKSOG}JGS8wFc86VNJPFX z;8uLYou4O_vex-I6j^5d5a)OhZJ3^ln*`7pz#!wHiy00lD}^`V``me0J*pJGI5jlA zQ|sIGAWMDis)T@iKmHeg!@b&)xLGa$c|+4R3c^(aO%!Qq*N6EuvP#iI_qtj%R(gMyNoi;S;m{Cmsu;tA3vMa;Bhh3v0Ex9$ze#m<;fc zo{5WOQWVqR!Bf}5jah_y^5NsO4z;0MgV?f!*xF=`>?ya3*l!Txh4d=nbSJhif3l~$ zg1LItXOp?k2Zf*9{6vC@D4*MTXh}CT{T=Ff)2X#CX1CdpsWg=G`iB9_LXP1CkripnA znxw}smU?6&NzPtwS&QsiZ#rjKEqwDi&b=9XN~BFR=i>lt0wy8KcapHCG2M5TU_o+x z_38;jcBDY7UUZgy050<8t4x`i=qc+rF=j897%E<03-4f}fAAa$m&$bmKSso>RgDODcR> zZgV$9N!Zwa`uE;Gl1ddHiE^_Es#XE_Cq6D&A1&Jnq8_2Fy3Zq?S5+xM#v4D3-I}{m zU!s%akTE5q6A~!L)vq#mPNTSjEy?#0O2fE<)yaAB4-(-X+?gl-vP=MJkEuESY|MFU zfH{6Xej@`a1nZ})u8r4n^8xR**6_N29JfEthQQW6Wj*7Ty#?{RtopcV)4O&@A5-`7 zROw(FN9!+Y9de7LzpaQ=7H`zw9SgaCfA>t~0-+)D`nAsTBU_P+T*-m*b{{Q)`eKSA zPvU8TIH4uJM#7|(&KppUYv)4WSCR_D)x_V|e0}{DVy;R472BCYYcmX7ll3d3+?883 zdbOhu3QYG$6-vJ6=F{DHoXytV!e&YQY?ZFSaIYmVC6mf>AJ84?C{4vmZlj8KQWsy=3gB)&4tjT-a~Y|L&V?0ez;5)&AZI z|DUNJV4E^E0^pf*0GDKxR3Td}h-50iYA58ZTqLlU%dS}Z%YXY^w(hto%RmNy6k#ADd0XonAN} z!^*%E3g$o5fzp(RrZ0_a)0#&%^Xu{l(HLAuZ-R;lHo#1r>2DaCU2A)uVJ1VLL@rB` zxOx<9bTp}`c6~G~`cD(=hK%AN3E4DJG`bm+=8;4bsP@7Y3^+kNHV(14{_V=uV$Ftn zIT2PkkJ2=gd@A+9@Cv!)dU9fY)9COxCQN+`iBULH2_p2jef(P-6q3zYQ2)ED{fuK-@`A>PgDCRn|5zm{ohRVJU=1L{ zhBBg8Ci?24xb^g5w{+R)+BiZRX+U>MCy+uGCID{5?D{GqaH#!SICZ2&CbW@!q<#|M z?eWDDjLQ4jUho*A1W?D2^CNnd*vkK+vnZ172LVIs*hXmnH#ipDzBsKCaGf zfv^|xPuSxJyN_d49Ph98FPCoKb^5)=wpNGK%UW_zrzx4aAlgOR^d4Z+sDG=G9wDAP zPC@L)b?MfJbP)m}yxQ6WJ4p6r5kl_+ssJGR_a^QtG0V2J45)Jkz1c5s>u2NhLvz`E z5iQgXpUyY-C*4v9djM{D*UR~Wpn0wFp~YJybsKx@Lt-q?Wg|ysY|o3tMXrzL=eN6| z%rnQ!i4ti7OE6-yUsywTP{R1gEI}%dE zM~mUlvxo=6L>y%|A;rAmAGdNFb#pXzHwZc(b#<P}pF^MAy!$VtTaTSb*Iw)3CHY>+DIc_6js>rSWv1v?;JpAeQDUrY zu+)DM18mBVmRaq&JPC;8>w<>-VhfgvX`#F(5UyZ?)A)t2H@!Ld#vdpuq*eqXGtYi7y4%{DAuYC@YPpg( zARMwUCY|#zc*RHUmiF~|hID`yRmZE+f@E3b0`a6DgXAQ;xri#)hv@?Cw)T1u^!Lpd z_8q&4X2`%r+hFj$!~rLLs4*gMXuRRtkFun2> za3cnT9y%@MYO706p6hWtZ@HaiN^}{a>Kwu9ZtAL=J@`I0#T7ZwM2~*%<4Tzla>LFf5~wy%Zhh!Wo`1qT0XFSP41nCmfkFSOQtBaRg!!q5f7KE`9@BV6ghv?J#nTp>nM0X0wvc<|99ak*#4GH-uL$cv7vh#heRVfHotl zMRf*(Q<+JTCi4ZijqoB#vO!bs&7X21Uqn|gpUX^@hfv;~c2%r8Y-y_B)cPX!FGHgK z%NjGcnUpdX5iK`q{?c{z`K?t$%l!Oeharwbu75_xzn#pL<;v~7wUje$hY9bkcjR$a z14ba|D>Zrqnilmpns2n<=vvUU=(`BPxwv?NA|o`I5UkwaD-L}IbTk0FcC~m112jh6 z=8M;{W?P{BdUKUQv*+rD#d`C1`)Yf$^lh-q*{sVvmH^jvKMj|DX@HCzt)azL<;IQ0 zqQI=cavzE&nwFlO)uj#;=S0VNbTl+u9?^i|;zAt3K)wz1w1f)8LJb-Oojou;AptfV zfyD0W--)@k!wy&;2cYDY8%DW-m7}h)$qnq!>iSBD4xS!}*T%*M#736ENw)sW@t3tK z7bj$^b{g0OgS|Xx|1DfbqRTFbtTV4hU~5@+SyDdYkG{px;W-=$f zE+)=F&%c5c^a(%pUZvvigkM3Dzr3U&Sy(yWA}(yq$StjG;qow=Til)8S>3@#*D}-i zRzZ^yFS5Rz2LXTQ&U@6w^yKiTzl?6bOr+a!KFz}OvR{NBSwErc-LM+&SvXZ{-Cjl< z*~Kyeey`ls4zIc637njDZcQIbJtx8?@2*u;j~-k(Uq_>WpD#~A2<3BZ1*W1LU+cjD zpu|PYg#yFH1n3yk7mm%b`K|E3Z3{@T@vq7mz|gyAF#tsViyO%4=3IXdV#Pl9Wh;gA z_3+L;_tC>ZO6rU3$ae^E;=}q$1%gfw4IP*iefRVwS6x?;lvI{I-ed4(nfi73wMC_- zhOB0m)@0$kXVj-zHkohHT@coA@QNP@(=ZTKT`_k!| z9aOTj0|4Ytd{P(;cP?=nK~I_$-)SG`sga;KIP6~3yNY^obl>q=Hnv%59(FP2M)hPm zIkOFdTS%%*=RI0fjiu}y-Ibq(D!%alC%t}C0UzhFtKN=5gR8skRPx55A>DvQ3b`!# zUgK*^V&W~*;lype@`?p%0g4o1l7VcOT%})84H(HNFIqIOoy$I`5y2A;c9~&TJJdCB z)N}+LtsVXdN`NlIWU&ysKL0JRNpEE$Ty6lbNhliLQ~q2*nh0f}b>Tv?v(ZJ4igR~k zg|j8}+j7fe3$nvRO%Gzx&or-iVc643L`AbayT{2S4ZNwIwm9MFFBcb4<-8UF~em#d3&VNH@7_Qq1XImA}m$tG$+09!7wi!H)Xe{&$C#}!^d1mqv6ld z+972if!AdXiIY4%mYv3BjO`?(;#enLsui`9Y-qg^q3(p-x`3Y}E!h2Cq4U$&s5uuO zWJjk1Bl<^wn?cGESQ@2)7}dMZ%qGBhm1`loxeNyqX-7wn*6zgFz7TEI_+a6; zVe30ouu?L(%oiXkmKi+a=Bn`3Usi(lb6Lf7GOZ!Er6F|G-NC3KcJz-?F1)}5WT7&i zM{^n(N}!?~?+Pk;+>#>wav;E72K}$kd*-AK6hIXU+;j3-zH;N&#~;|LXl?2A=FH~w z3Ez1o2TtA;nBs}bB&2?5z7J=?6kYoK`bq*zh+wtP{hjQelQd!CH`zxE;h1(@G2^i^r$JPcmxzo`JLhv;n8tsh%C ztX!U7FnR?<=#)mfkNwsiB*M?T7vubh>#pX@u8GNJ&mg-WRQDSt=6jUiVa`*ToGvr%s z$oe|M09gpj>S+;w`CZ;(#NlysYLznQ)F7Oh!Bi3swS=g@Yei+$qJaARZL~@3jp|wX zxpYyjw-c{5vJyVP*6N4Xy5S?7M%j^SFm@f$$O!bEhYlz5Jps@^gYe(1H{OwMjSWbv zOMV*YNJ1v~04hpsrcA_U40{pWzy!vVR#we<=u) zJ|rVs7zB$$Q+eM?2tqA~{Y#XQx8t*^i+y9uPAD8-U4cI<78+KidO`9B8HnHKAk`Q|CwY2bX-~ zj-2R|xxs8VWNGk#gTq)+0b96dKH?dlBMTFOoXP^H1t$yz2voJY(F5?HX_t+@jBoLb zF^GDKC2jD7Kv`WO<*W=Yiy=&$b?( zkROm&Nq{Y6F#pnI#)Dvj(8;hYpF;g_oM`EXYcDR~oVBeuNOK6c!+rmpWktvp<=7sP zL5s1qy4vHNR#m)akB`@J;P-C%7Uy5~v7P-fBx(XrUz_9zGjhdhE5tQ|Qw*Ojkij>J z06URuGn@>%2xRJCDvN&=z*&p`B>P?PX)#)_^5 z!ARc5iH6#>se_^8JMb*gQgsir0cAj=|+mR#PsD@nZ(-K^XL8jUW`JSM{gC=9&y40 zR4Wvy^DM?!sGK3Ls_ni5&SM)t?NW#b;=#L$(P=E&{ zR62k68pfTiCN|ct4Hfdct1U{JG(z(ZnYOiKRmmMt&>G~`UV|PMd1jG}Q zqS%t_(rCsmLGgWCnylt)>r&ohm6_2FY<(-QXC8Q!`LVzcbZboJMAD>r32ij&>uy0T zVs<|D=Hc`B61ti9aKr?|2$f#bcoBo*)pUPnewswU8dgx+OT}(4THrmZz`GWP_{#?` zVt2%DIC?Oco>WnQL@Fo!F^|S7BpIj}sXsGea5Rph51E#L!{f)<>~z{83NUP+HbroD z8*c?y$YTj=36dZ2dZ~fMZ5OiDj5+>p-WK9Qhym5)MgXF~J2+9`9{~4fufxre=mdW| zsT3sgtj9zLci?$2^w~SX%2dU9T`AH0F^>U5ul@aoQ3z?s^SeC}ouc4mp1{~EH-ZHH z@Z$X5Kn4SHvn2mPERg$b5bhELu0)Y82uWJ%*xE=gAeu zCP}mP&Mn{waX05ax<@1Sh{*#U&NzP^aKZ%pNkx(hP>*yB1b*G+RZ{X1LZ_ArLxx_? z6a<4FkP{741ZfC^%%D><{n%rdT{n)~c7GK&Y;bc8(bre$-Wt5!5yc@!wf?OY(+AQV z3-2YHL>B)&N<5BEUM&H)lQL?5VM$1-*LQf~9mh9kR(1GU=N9bFX*SE?LE?X6i@pLC z2EldlHtsFyuYRM-{2kXSemM$zrs+!8mohcx(r1aAXc}Rn9BK0Je;NR6##KQccx8>uO4wOLu zUddW-NKg`%dIIENr3OkKQgnaPn!*?=*wy4Ei_&VieY$$~aDq$qjI|n^^#M}trLK?1 zjik8Uwtnl}x8+;iiHZwKKA+-Zt-yw{%WQwCzb`Ps0NphrtCYF+3J6|_0V}63`9ZSD zx`;`d=nnq56YT1jRjXIGpbyYZCpTef{bVepe0`|_qCuL37V4Hc*Cl_+2lp0s(WOeb zfeXZqs{pp8MJIsWz}slnV*TqRrx64X>Vug+&d4z3Otqqi9ozMPvkS-W_ERUKYxz7 z`dF?cqG{vXdBgfa^lIs+S3|nim#ox6FNI?>g3V5N;5MY?p7eA6*(80u&S%b?ZT67H z2gtSp*g%aGH!w=fH`3BoRtbc}tqT6OyU!0W>Jy$X!w`Sr7db`f^emBt?BiA9mpJPX ziVUsBUuC>My43;QK&OW28-jpDh&sV~GI!{uvB4n6QIE-m~_ z(dZAS4i48XOZ0Fl`PA9zBsw-&MZvE!An8H0yaBZ(!4C(~VAq!JESE?UfcFl6ddpUo zxJ;T1P(FW$K{4r2G9+|)tphp!Z7O5WG@;XP8{X9Uvmo`dIoh#$D>E8<36a-VMTAErP^XWmu^jh%b=J6MiS6H1HMT)p) zUH{bcPj=An`c)zn3g^c@SdIr@%6QeIU!>nxl;MB9pPM(IT8_>*(O^w%n@yw;1)s=% zq%+>=CD2F8{$1HbYt_+6`@yqF+Oq<}y1&e#O4Z?3VVg5@g3l9k$H-~adh&~H2XU1& zpLs=kelkvPKmJmeD-|%I{VY=^EAC5y$Q63Bx4m3|GU7Wg-*7P zngM^>E<#V0<`}ojK&&4$lo%DV6NP;Tp6P3uYYi(jEV!AGMsBeJSAL3r`(CYNI6A_z za3piO6zLH_H;9SeZ^IF>dS42}t!C2}gnBnNM{0nYRgDosbq5ei>Y&V*KX0Y!2sHZa zSrl0VYt-I^aX#y?`ikG|7fO5`Z!I){@Wg+IC7GFMPU*mSunP^M2g?Z6y%^f4-^7PL zA=n~2Fd%w+4egN`>4nJrY^rHq#fa7rz^ey*c||p7pZm2LFpIVN7L%Y%hcu8C7%Qtt zN}nDS1Xq9)3j)EV{$2vDV@s;L9mLbf=eU&q8n4=r@Z7`-FOwyUPQ~-a0rtwA*n@vx z;UVWTZsjQM?}*#-G#$Ja^*!vv^$jl0Hv@HKyM?QV_3`y~nYCV5mv#()H7H>EK_kMo z(>As~9rKD6NonBYEr@PBwM59-Na+Mdot|f{u+DHI3{qT@sj45-X}6*$3yZdy(EgBw zAPsU^c{>0_$di*a6w1&FO~<%Sq6dGU9ea@J;S;jq`&K3RVHsnJucdAUvV7T?yovyR zL$rq+E;}CNkbyx^_c8Ltmtn-G$0AHDGdEpx0D(!(vx1!81MWULwYa!0$FAwaKAoRA z5TZb`o5Ubg@tyIWe%!Ia5$S&m5(V|b7i$^bf=(0zQe4-ZqvDtFRu-_xO*Mb7Ho1w* z#*|ALM&)mn#v*WkDuV(>SI4IDBy_IJ-k6xD*0e1ATOj9ob*X9{NCzwNKlwvKfrqsDut~yF?D}|E<_FmTJ zTcP4&B>ZZx9*dy)Vzo>NkHUX7!u7Bs<~4A2pl)v4CTWRzBcYwE}-rYY$DRt1@~= zxB(~0wSSV4uKw@aYonL>_>cH(#}V9_qFHsNHGBgW-7cQWw)d?kXOE~Hqe&HYud?*9 z(LHzO@M`h8LVX0kAI6_r8N}Q(JY-U}{8HM_vm?p$hmIMN*zGcNXke6z7$JuSKOwan&HD~#b@h1)L-Q)7X27BX? z+9LQOpkPn7QvppO7!df3lXf9_LkwuMGU$*dpHpN19P)FpQT%_Z5->Zh8C6(P4D6~6 zTw3@@me31qzTO^v(9seAOkv4se;8PVW|nhc0nZBaw{|%W)uTVZ=*& zmuz;$tCdUO{&Ay(D!-u^tg9~==OXFxPuU*p%uh&|zMFgUqw@UP?g za+dKc&)*nzXyP?bDuNaoSUrj(#*7tlo2GYm$%1}7!CgX!o5Y8kZ>C9EIrO+By_^%A zX68Kp1@%UutbCFzHIhL7n94Sqsy&JN|9tk+wlTK`m$ZM9=2U!|F%)SSZTT@#PGtq) zgwc5mCzUiU*Yg$kXr7Al?Gs#jD?r!4F(xhaDW&|SjTreXX1=1wxu}Q#G}RVd zw`(F^DxrUr!<*V4q#*=rMj6G~siK4X$!-{`Mvs$8Qfmj5SRoksX2d0`h#lQ{y&bMW zF;2eyrACou;o~J2g*kEtnW*-WZ`1)>A=4}Rmf(|@mdbMAQixJ^lzkU%0HHc+g)fG{ zvCMrJs_U?r8?6`KQKf$vr=*}X3P!>ygRg-u*XuqoKY!13hmLk~c>u{88n;#7lo*=ut7*qA8g6X75*K+0$X0NHKA0hVzE?&x8-@3!1o|!M)Wrf z^lD)7AEsS^wk9SrGQF25<~Iz58w=%#G6gWKi@5x@ z`?%lvt+Lij9zuVZ(;3ZS9wlKM(?gF(OTMX;M3SF#?|9DgHH6Fk z>gaYu@ncgkDh36T?)l=txbsw`MK2#ez?VF(r_3`YbjJL0EO*&eYg!kp@P8WN=vrUhY^aj33enuU3CG;~Ro25A}ujvPiV zkQvQM&pc2;n*%c8Tw3j{5K3vvoquaQ(lU(lnydC zFWpP)-pdwP0Q_;j<|AN#kM4hoR)rihujw@Gb@6Lp_@R~0fg>QPl^LO%fJrlm`W7={ z=q#rmdctRzYW(glJ!wf28ZLAy|6C3G^1QW~)3bQ?;C;9gk;NbBl~Lr8S^yh)P4$1B z4T`CykK^k-QS`tg;C{{UZ&O@)|J6fpI8NfhB~(DXm?YI15L}iE&c}a*1sCT~A}+T6 z)7LQ}{_`mtz#{8LLp)|cejUG2Ja)=G4(xkHMp%0F`H+ri&3g9xu6!cuXtN6nOzj}o zaG!IVl<9o5F{$NmXx%yUuF93X8|Ivv7Vt~=5Vk4x2bfWUd{;)voY3Y`>hC}Vhp~W6 z^%(`uew#~jN@-4+5_r?1Ig)(x>YK=f?sR0&%Pu(G6l zU6XOtFMDttvhF8TXj9;;hh_1a`nn3CuYrPlE90!YKK8j7L(nh*yT4@wlnHp9jy915 z$-6C9x!yMK_7mA|@Jxbv3nFjvs{s^^gH;j*hwXYMIhFhga>aj)$6t(M^&%apEpd;l z+1I(6`M(reY=QLY?D*}X9{-@B@(eO|JC3>Iwfdj@tn%W-)h4UTAoj1Erl;?WKcy~7s3XFeCubZaUJ95KIDHs|YfQVn!GwOTf zzkKxTjf+l1VzEl{uf+frRjA+PIm8Kb{C)=9hSa+SR{CV>{R29@czEkHFUF1$#QN ziGM4|d-{KdPnC2Ea*28;BInYK+Pzz9B{wqh=+a(XmMp#feM>Dei<99CR^=tU>DQ%6 zr?%^GL-n_1dH2ZPT;VYjyZs7Fq;u$wOk_Kv>4sy$M~MuL*&rB$H%y`X z=Olmk&ZF!N^PAz3F@LZ=!)s(njSwj21j$PEtjhJ3$)Nigx8bcK7`2NVmoUjm-}uAf zhTywA%r!U`uu00wcp`>>hEcVmQ{r9nd>ZpcyL^+_y)DkY0m-xPfxnq27byN&+ z_Y;i)>z51+{>&fl9PA(#Ox3}dR8XpNZZYA*Mf}3i$4D(*5Z~-_3e}{U+rZ*?V^{wZ~jHPDs3hwOC6 z{D&9=5d{J}Cej5_G2rR4i|dpwR2hV3h|>{lZrO9d3HM`;v6(-m@Y<2m!6<5hc)wmk*r5ue^;)0I zd|;LNFcMapV8NT#;cXT@j5!h@bNOimSTrM&W!BaHgcjhJ7#U9-mc(-=TPy?y5aM7- z6b7}K@^kaCbA+4(?#h5(4Qd?|i1pS)ZMCf`@J;zJ(Woxo4W(R!OxZvb5>7>fDuff12`k@vz5x_@YcstpRyaxJ zfqdsA<&QQF*(c{~{;S3V&eglftEIfejdkX0Jgjq!x$s_W95H8X!g4_q%|_$tdb zt=g2#^O~a-lah;obDrSvg+&zEa5W6IpB|2UE z@D47-w+|)V!y0iXisl9h*NuF5$uG9nM_XguHw)?z)JiFB{xoRq@L3y$v`_uJSnU4( z%0w=*jt;Ygg;9VI8H#^_0^XZb;N|4Hb$kWGCPvMf+D!E+WKeZ2ZXHohPG_%ReU!{1 ztOAG*(J1$ zc%c87x-^ z9`>EUf-7;G*LgZ!FNTUC#q`;qncE=H$w>SHXJ*HeWmjwV2$~rH@-m9u@?K;spC!iG z%+q9HYtVlFwPSxTQcZptc&}E6++!)Pd~0 z8v41(9!5=B3)+HcjKbja*Drz3o*>bwV2=_`ABj)ngWm_OB{^AQWK$Bln1=#f)fNM&5evQ%%wKH%?i z0R@#jEi5Zql)k`wq+8`9HGHRY;kSE^7)eN6@z-uwkDJJsyY%g@`y3*xNi$d>vF>DS;K!x+@zKc8P9HDci97tN_qMrpLoJV(#E;M?I$5ZVWJa&W7%LUM<*n2EKf=F~Vyo znb^@4JuSZ}73sdLL6tRxUi?y)+d=opLl2B@h|{DvV>$}IqZ)@H0o;U1X{f14?$a-R z8E1d~P_f6}gPE2c^Uz5wyFN3un$V5u!?&ll%V0w>)=WuEm;%SwI0yAMbAt(}SmCaY zmB-HH{W-0H9pr)trOe@lDOJgaAau*mo0CdL-$tN7A6MU!quk^OK~Z0%GqsCl1_Vi? zP^_X*Z@Kx@UrdV6X49U|wMcdZGUeEjpw)j@`Y4%StE|+)XCAdffjFrQkg--g&w!I-m6J&{kya(g>KXH(Od?^s|0^~&2OUs@ ztPSo*5&UH3>&UQ*&nRq>q8NHy1rbdl_gC7L$r-U}6UD6QcGrGI(DT9HV0sG~ZRZYm zX1+zsQFoExFe~L?s=@MHBhxSg!fGGge{7%BRW!}@@f+D4H4UR&uBn+VBFcaHy)mbR zjR=8R`$e7Tel1sj27HfFS=#V7n>wR3^x@kdpN9S!o^uPB;xuF79_lpoq30s?`51rD*Ode)Rnz4O@s>;+TcG!#OCI%07_XeC0Hud_wFzDO zyHN|@-~*d+appj9D&=p?t};_vigT@lJHKxU6Lr7luR=7{`k3_b7%)Y`!HAcDW>*u{OhX& z86eXdk%b=z^&q&uMWGNyd9Wvvok#OZ(mj0jd&RRGT2)lVmXYUM!8y(jo3Un zpO3UC7S=k!Yxy79HQopW`newp8H~4(7idH})i4SgjMD^ZCV_tj%)97o<2SnesJdpZx+(0@g{er%{9Pb)o+X~2%2;PF6UQg5cRmcIu)*ahWT*R z3F=MTKrp=lR^|++y%;(8Lq7>|B0+erg6?|*gmii##fMsGabChZ@nR0y07)AL7^NSoR4ySsAFiR_IQ(haNp|Ow<_t}5pF(`b77AY2zX#ObitB?do zqAQeK*Nx-H%i(W@G?;91M}zDasQLTSW#zFF@BkSb+F0ged&ClJ5;{)~#1NZ_(@e{o zeTj3d%j6rE%?u@n^%<-DRJp*`yYh3y}cf#e@-@@BA#&piX%>QL>)kT*B>6 zuI@hNlMR2bH$w$Vj{0@rBc1U$v4BRwk|950DZ)q?tNF;i9B3&X{a#KX_N$;dDS~<$ z>StwG|G(@akKWle?zt=(Lr$p1jW(xJ-m9tC=;xEN-c=N+xmuQ#qzbUCu>^#sS z$k8?TMSQ~!@%@rGx!+Vcyz^%2lYG*>OO^a50?j=JAMbXt_i?{lA$#{-6Y ztP<`7QVGcAiXKG>6>UoTm*z3423nHNbQy!obCj2jsBm||{HufH=HRQykE&2)P$ zvQvMssLq*87Zr4s9Q5R*t_$JTVcv8vg`+%HUQJ-ptNO}>I9J4@!5c=%p0;~-V+PIy zjSe^9{UZAQMmcHZYYKPbJ>>}K_P0Fadjc@V$a}Kfqb@iNdqA6Hk3=5#$q2`ni**yp z`SEo@$Q61v^e)F!F~mY5!DPEFmlp;J3JiY`s7pOM-0-5gFNewG{t5939k)g9#Y;?X zQ}J)^daeP-lXkFlP*3Heg!xdqkqw5)+=G36J(wNMm@@4FOKAkVm>%7Y>cNt(mVEr;%Jd?l8%4^F6k9zFbK9az(f`+6v5W3hJFI z9Ys`G&JsCb+G(&vhoPlj#57OQ^EoM^PFDDIsDiFAFkH`QrHxCpHWX2N!dn873#Q?w z-;}YMN4`!euU)71urL}9+S9^e9o2u_zt1$AUi5bbr537w>prp&LM}G%Po7Wmq2QrU z`yovb8_ooKF`8DBgAH)Md1umWj?d>Ksn(-z)H9#NRIQRV2~?Wt;d-A8P;~b}J@G&b zE+&aSbDGTSox(~r8Q@KqjNPpDaHQ4T+RHduZ?`#vicm|al0qS1$x9TY0y4KdIW}Q z*!g=2su!%)U`gVpQzWrZ5IS=95@(t8=Dxb%yaAb}m`@|DoV|~e90tB_mBzE-W3DR6 z7E$$h1m54RBksQ)I~1@7&uo90iOV!5RM3=w7@T;d9W_+>)=0L3q@4>lZkXfJCIR8$ z7QzwLnFcop;x6-A5@hiwY_v`|9d=&06EC6%Atl*Vg7wp2!TU{in2wy&v|?5}J@@Em zCx4WUdB4jVf{;{^pHyh=>t6<>!Dt!lb1*aJXj@||>keFVBE?U8?J{<(1=eXRC} z3%Mb+4qVUC%@;OjGl0}zwk78+gkLXzJL{_XB^4lfrhSS))m9j}8zPgetygyg6{~}H zjm;;XY0ZtU!fo+29$pzZz+8``rehvR4}coSU%?9Ol#SjS^K>K8(_{IodBP=BN8r*1 zg)_*Q64JWi#USo|M5=%OWUR}m+P(NC_3CG3q2Qd7Gwv+?(MVYEv_VnDAY~GA_{spo zn?xx29`J0hNs}?hBV+8ePQ~0l#hl)-A&egjgpk|Il{eC~JyTA`d7HG9zKG{#yt*Lc zD1bt;`3Uxqj5f!At=c3e7KzTjs(UJ_nb86>VkAKdc3{qTkp_RrR^rTS91cG;Qk@uH z$310Tjc<|c$RP{^yWqy2BTCXY=tGJ?dfmN8qhUzeyr~vi|9pt_a#1`H#*wF|DxvKL z--wY;ypgNzy{5>15%R_$Vz$I2BsBOa;@>%lfS*~++mNBR5Q|DyWkRu0b>cZiX>%Gf znag^y90?LAvWkB$_Hp_9VbFG$Sya*A@tf6fA-IV~f5;7~j; zGSdld+#`OU>-3Ik31y1cGj!JOzN+Bg^;Zkh^dYl`XhDBSB-SKG`q7CuANpk;fg)fU zDzl_GZ_nnkIX@=CVZR~ID`_2$Z=v^+esV*IcCbu~k`y+~KxUT`5_Z}9l*y%=m&s^@6I&fLBI1E>vuf3=H*NX^ z0;_nY=#+m|>?lj!q*s|eaF=UCGQp9dc}`pw!vXewe6PK<^;*5XDJ2n8$gl!|vT>@J zB}>vit-lh42RGdNc*ldO5tUF-?^@ut{KvZtuPp0nyyw(0a*<3H?J~xn-!E7YYk_?; zm>4k^0;ge~a60vYvzyg;E$cRXdLvWIQ_{Kj^sj&ZASh9KV~VyLKN6XpSSxJn%D8Gf ziMGESyE{4tvVLnv$2n@50g6>Ds}uV8(e z_=(y$V`wW^oH_MoAE4+>wTWPz;81Jr=>4Y5$lkPxb{ZxRxhKQ;X0>&# za2t9KENBlOpiON>ZD$W%YmgOtk(>I?a&vMF-%}7>vO}@D#l`SLqS>^+UYmJ!Q+c;Q zl}~?1(W~mQXAp0TdA~@{kavC3MVp3ESA9vxnwJ9PhTN&*sn5lhC}zVfT=lvRpZEcq0khkO}I&KWJ^@ zmrd`Q%#xBI0j41UeQp)rp*=Wx-tiL>nlm3ntEcU;i3S=&_G$+AP{VKUsaI>_sLX$2 z>?{F6YO=eb?D(fy(Yp-{z8gt<503+)PFnkpq`b;I%i!l zN``?ZvZ8o^`>PcgLGp5*fcMUGx3Zi}*y6bH%9ev|=UX#-!!33BIAc9uZZCf<<;bJe zGA${OvP>5!72A>ZBcfhZ) z2^r$dxZhi#{}X6ixEJXK=`JOR#tQFZUFKesf3450=h)#ad1xD2oh;=T_K#?DYkqV> zpnVK3U+oB|ve|(Z;X^Fs<_mwC9yy568Jk)T8awj8ehtDA`Gv4USCvuW`J+V)A*s-~ zG%2wOUmUZH6(+LJb}~BqB}*R+2cAm)(t)boAh+GQdQ>SQIVeS5?ne`C+>{yUH_F(9 zGt!j|S|{;GVN|NA=T@Ys59%_Ik`f7eZvfWJ1Y~}D9MX~)(hP^mEaHEDRZa z{U0gbO9RvQO9IOxF!X;)Y0I704 zU8Hn~N)F_kMeMBr*jpRb6#4@Z8}*&+9}c7Eg3~uNl{?2>|C2}1&`H51tHBM!@J46wM%qTgb!LM!&n|d-wZa2rV62 zM;4}=Za5?-9Y zkn?Ns3kGE)UITx|;?V+Jh=^M`HBI63hsRpwVh~vQx~{fwADr$Rnw=-h3R8~>PSw8> zv6-gAu=~NtF0Y>3%fs}}uE6)nN(l?2r&nSeTC7Liiy869UBo2yQYqBH!cG zM0WdVQYtE?`j=$ED*=bZ-h=MK+Qz>Q>nPL-P6Cm``>}t+=HaD4zt4DaOPt>ol?7h~ z>1<4lGBt!oHoK^eHeA?ylrVtze~aMJV*6rk`DV8p8$;!>{6)s@uf+sMlP^B9B*@Dh z5LJ=cF946kJwez1;Br^dglAApe4#)5Dd888WyVSxch%7QH4pOO0zKS$Uol#wZdPu>RK~ks1cYh zQi4YnwNnCWM_x-ixF2N9}5;7sc;S^Vt}fFTOnk`^Kkw&zukK>QbokgioC}FNlA<=g&ZWx zo$!j`pK(MdUkGS9xQ#He7yqIbDCX19;ZJ{*ZqfcN8f;q(|FmPVpme5beNLpR(k&rv z=2&@k+^6m|2A@OB&EUa^{mOpvH<-t_M`9PtGFPtip+FLc{RIicytGoxs#BZt5^EhQ za6J!AW40*UFo)Wfr?E&2cAf3aC_6NVz+t?3;_{DMb@)fUb=YMn9%e`_#3p?C8qnd(+}PB>C=#{*2d)+> zA0DeprYD%U9^p%%7HQ`z-TZnjt#&#)EyAvktkqtkCim`)9W0`c7+I~-DFlDUVg=Wz zN3(wKPudy^837Ze&C+}8!gJKgc&LtSpB;WylKI+$OV#%mQgT$GXDVe3O}R||JOgSl z1ZYHqCo`}haD|J_FGcX>oD|Ezmw9+x`{G=GSU(o>8%kR#EyDp*+Nbq`t=l=ikaPP5 z^%j8|dUd{q3>0yiT4X&%Gq!&Ue+)1Z#G6!Ae|HnWmi9Ie|CcoG=LqMNorGCm>0Q>R zQmHQg9!IX{b`$L1GRIS9vYg>x%-xGpIQ9z=jhnpap4-8>?rqvBuAJm*A>w+4?$4KP zNpyPQHp;9!_ON#*dgPf z)k?Sc!Z!@S#Nb`ir$HC51`1t{BOTqbdLikODKR3xT4LB=${m?4 zb71-WaP?ZBek_OLL>I8-!(#_%e^pnsi3v7sc?s9C3}|h_L$kclI^#FHURtpQ;Z+Gg ztCN1J?13r_H$S|$fE|CT;5}+_*2E5O_dXgXO5Xed&rj}xv*Jo{&0pBJ%$d#+LdeB( z<3M8gg-&XYi)v3_;>DWB1VxSqaAp$<)my^@O!O5jCCnYpT1tE#3_qdoiwOpl)bwWF zkRvI71yGs=vHgH0O zRF{xr_UjpG3q~>UQ`(!vW8MQ9#vNoiMvzmif}pgBW&*r}i@F?)-$gkdV+0yCQ zjU~&w9_9^RF^sy?-QnXWSpBKZ7>SQAsQOXLgG(lC>!QOm+Gkso|0wP{Wu50_6xOVc z`#Y?X)3#bCph|zIkLl47S=TU{^!kC2<%;$ku4=`A7{B7e=~F&Y;EEotm&)@$prhm9 zuHN<*$u%QZ;Cn2^HYkhEe&fGX7QFWMBsg=7UGiC8wm=_zhOZ!;Sm%}d8pGb&2}2BF zK>z$)r@w5TrQd)SR1djynGR`M^Sw81F*?D(Q|nl0KpcNMbRKS_e6f1*Kfi=(cS6+g zs-aqpbYeIhz}My1TD1B6fS8n4jC5i?(B4rD8t~yW^!&<$nS}xGZ+Gu3# zI`G*Ww+&C&{o<>*(SjU*HEm%>_{88-2iU3z`P_d^?Cuga>0B!Y zfK^3(OlU-GBVcyd{d;jRLJ5|#(a!)`>AA#1ZLZPGW-ftWDKg@20U<6eRc zeInq(aiSB^ySF8xVGjdZ;1W>8E^0ut`{O@!G<^TkL3xmH*&!vX^0Z;@hY^!V6}G zvW*{tWw|Wc{+3jPfzGZJ-ARBg;Gbd~LXjCwH$Y}JyYsW*iyBM2s5O4IiX9CC4=1yc zW?cvgys)QfWb~#S=V#~Ia}H-KTT*{19lXVZiguVqh*~<*3x{2*u$ZlbPDT+L6Ij*E zD%eTNw0*opZ0`k}8ow4ve&cYBz(&KaFufwFQ;N1Ie5{y0bfWz$8orK-Uh&$|@T;*U z9gpYPVmvc$rrOP4_5w6R6hIHLHt7ThD*tbP0e}YUUWM;Lb>#KX5%xj!3vGW#)XC~q zaa00F*#&4_t;x!jl$4{Z;vQw|wOnN{&A5maCf0B#lm3@feAVI+LINP2I)`QAk;T8x zZn!UUAdsdC%jrG0b0(v(h=zZdyv>MXUB*XF3D2VNUjxPp*&_DXO9E#xrH940eVt;T zffyhsXlyKmPThi6={F~TjiP^xgd`lA12Ue10`Rwul_!i(4ob6^3?}kFE$)8p2aZd8 zlB=M2AUwM1kO|cJ{@1J+%gEWCCA(@7)~C%{XVQ~R20Yd^HX-*z?SFAi-&OmDcs~+w zF);7bzrQ#|iUBJUGi8p9kk6H;t$ysJJoj5?()2h^E*Xree)=^q0`2{|S=PFY$XX z1)p~Z=r2%CW-}Z~X=(&dIFIcIx-xP^m2)f5%|M^Y4_(f!HOms~2jNAYf zaTQG_MlLo0BRvZ&8JUQqsi8B_&Q{dW*_0cgVQK>L5s|4{(OcD5$K ze_?W>|2F_zS5rsle}I`e+Svf)#8idE735Wa0b(Kysv-bGTN8k+T7dKaNY;k`BN_dV^gmul_y0)ruuMz<6QHp(z{u1bXba2mFW#hV&Flc||1q1m z*#Fn{4Y z5l5gIK-kXO1R&<_Y-(#_YVzMiLmQyA$Nx9=|3*kT8~#I$kgfSYWHSE81auMyx|^CP z0-gV1-^|eZAJ+bD*D(FhsQy*xKiU730{k;#6FXaLkN;cnpT7QGjzLXTO+!SE=6^Qg z-)=EmV>=U|tvNu&`5$r(9Zmkn@Nc(&q9O1<>-1kJ|6MNt)Bn@u44oZ;?f@M|`hV>U zCt}>-+=`TA2JgxWu`CQ^m=3 zgU6rtH{#p5*p|9$A~uXQg+H438$}eRw}kUjL{e_zux}8lXu1m-SEfS+%r73Exi%rYM8b_C84Dt+2U`g$JqnZz?Js!KJ(?=y8H?cj zDj5R~M@Pfn|TOu-1LTiYCe zegyo=kD9bjc8T|uUk9La%os~B2l=X7V7Zl)V1ty$SJ{t-+2p} z0e|A6`$q_R^cEjjrbr;V;M^%3oowvw@(H3110|&+F7J2_pT9I&h<_n}7uoCG93x-2 zbjyW00nM)JZIo*<(m`l{BQ>_^PjL>n5pO|Kyx+)t**X5xqofDuf0@>ongul%mMNd1 zt}}Y$7tI+vf~IW7)mLHYWpTAtuNbB<$3wp z18L%#aC8^gD^BtpN*xH?d;7g?|CDX75Ur7njWSIDnb*TKPrZwO*_5tWru@!D{v>JV z#4c;EeoQ^gQEOptYXB;z({?T<+zK(B23EV;tg7q5z968ZC=UA#b_iwf%A-5x-BBV2 zA^cd!dJ1W7&-GzfyOr$oAeSM+eTgFBmeQmgJWLXCVKmW5Pol=O9aY> zf}ymQ?%@_Ve|L0$ruHv2TbwA_%FPs)OgNTYK=UB=vgCD~_0EnJxgT-qJIPCD^!%_H zTIxOgaKKVe?se^i@8!hVmfS5k_`TsoM>eE^;z0i>p};6Myv|Obv2PBg96ZyV96Lcu z+rm|1el-BLcve=1JNkrCx?TA)eb|o8E96t~OqB8R5(3CAkiF3?@ zDx}GAmGabr%qdDL+xK3k5*Hpdl8gsZ(g4IZHTu^@LW`aPf=Q=@SxNu#zRU%OXX3cr zN)n3iE=AP2(4etXl9T3kW@5{t(L`>?gQ-WJRlXP+;=$XcQW!qWB7Q}`oD-kv z_+UvPsM_d%rp1rh#B*ZtP};+4xG-D;BlUam{x0>I5U3N3Cr@I(QK?Mc!A0Ah%I=<< znzrEF-0z32*FKz!%@qG4O8*=OEv|i)hy)3m?J5@OZuHeP%pgSz)Og0DM9Vub-gWh9 zB|J>Q>*g{O-EoNiP%Gky7Q%9=)}154;DTr`SjP{4FLTS0mQDAN!u>JXjz9>k3#g!cV8iYvG{F% z|FpM%GmJHyOrgEKmY_pM50(}m2t03u5d;J(Y}cwfAX^n&E~Gq75Ury;yD>ud7$61z zMeK8_1t)CpPXIMQ%D<%13gk!T60n~crPPy=V(U)OF~KaK{(WeM1Lg}ITb{vhVu|k$ z@oWEErJo0$=}ET}2@tjyKwFN4r|fdE;o>`prE9*kf9U|SSXMY6bS15nsr47;ue&-7 zW_<~{E~n@)!@7PB2mUEbHlr~3TzsU#GnnFT&PS|`HHd!YULo3#d8gDHg4lk{EX*ew zg2S^j9D1Vh_SJ zYx_=?f5%YgVXqV>!k8}-bnUh{PFyhyP&jf86{YQL{M z$<$&D?BLMF5wYA<=+se48kl<<>brdL?hVmx!g6A2@XA6=zkkp|iPXW%ss1|bzGywS zR3^H*RSIOv(;yLj)8Sv8%kfdBc{b48YtXcgYEh9ZivJ`qJ{2hPv$bJ?z>noof9fkh zVk5k?Z`eT9QLrIL(||2&GXU0UUr^rH_U4;L1R;7U_3%dX2<_yNyf@~VC4+Pdw^|g% zkf^czT%4bQBbQZ({mPyE;|DG=nzJMhuYnW<_Uh2@at%TeCB>+qy~(D8L^V$KCRk@g z-d1CbSH&@GK3rei!E0WV=F!6=mJXgD|IL2*3nb`B3h{u>WtJm?@O2B=o zo3w?KNKW%WLd}XUHp#>K{KvK1f^q_KX^tFVjXXo8zuf9uDiCF-4k-+de-}ilZuis} zC%}ZeOB&pdYGW~Gk@#mO9fiiU=8r?8y!;P9>;OKr8&)keH1#-x}m$v@sNA>ChCkHX8YV=8nU7;H! zf7vp&&}3`d_$9&E=LfZtkiu%QIJtT`_FkBul(Vo^H$8 zUpcusgZBbBpL?rlZ9~tg&BHk5fOR8>0?kPpSOY%G#h^>G+dp}<5b;jF;oNER|hLT=|4x=GX{?Kstwmr)C)q~xisRb+)ZMVHnm!5?kMlEv*glN9312N^$ z(S4*fD*E+tnodoCleGrad$`>kz_8R1h0ue}7;LdS7hcoF!J{mPDF28A@F4Zh7DSBi zj1?Mg@7?5(=6*_je>Dw^m?H&dK0w;FNbu#4?r)BBXRKB#NcccpGx+?2NRF2t3#pzB zbHYw`I$h`7oc*o}iv|wJOC-e840kSUzjNB$fXH+MEghl-=v}E-XN+(`o4rYcZX2U} z&a0nV7<3+9Xp!OKL&NqW7BJbvu0Ee|122J38kaWQpXTQVcP% zOL5O-{qWI;7_)w;-z8bh3>F3ylhtd}%V`LYIhE;hFPm+z+Q$>&-VuRa- z-E_V4UgkR$3cy0_`Q}LcKG%@ise#grDLh@|G$X~y&WMYqjQj0Lsa7+}fU#6NKIe>B<7_wz^MG^V5>&qZq->zD;P zs(W2C98WvP5jAUCr{QoM%UG?(GPQ>hXsWeQmCP?8fct<{bwjt^zGh#;4$97bC67wV z)S9pnO~f!<5KEvv7YT7QZ1(}xJ5;))min!dqj(-Rzrt?=+D@604#qf9`%~^gMo=6x zkp%MEe*hB|-nc{OwM z8XWVhj4KDKy&WF4u7GCp6C_2nH4(O?G)L_m73fWAs4LlhioKk(#*-J}sy!yGy6cOx4a&O=n^ z4V)y`@jf-4*=>a=x$+M22ScQ`W9$gW>e#^2 zhL|T{{sP7}emC{~dDXyl*obm1eQ07yePUe{<># zZk_=HL%Kc4E)FLnTH1=Y{u9~D5fqD?i2s=(`5M=Z9&3|%;$`%c`+xM!HWJ7)=(tRTi@_J%9 z2l^vFz$Y}7&a(TYC$aElb2LC#EHDu1!qlF(#fQBDaX7&56F=JRH^5_?_r|WgT6pG3 z!Q$}ZDvO;;LT@|swpe`ap}Q&im!3bOFC^3m3X~N$!n*+Se;KX<{Op5N zH=9678f$PcIljWe>MiorZj@$@qBmRp7Nnz&---^BGpw@vSSD9NpYk}Yoi*`6)nnsM zm8(CcGz4*$X0e~!6x*~0^EgY2#1qpNAOwBUEfjCqTqHlunY3l~93ISyrFK3a!=@%K z=g+YmF9a;d>R~cSCVqz2+!j33_2y{;<8q-CGowwT0hOHW_3?QXxiyw-2dlK}6H+U4T45I}F6 zz$QOu)KR~w#&pbfuZ58`*{-JN)>Am;eM-EemyT8V;g9IZi;&Ep4$^+bP=+=gzJL#V zfX*+wZJ3KzUwCEhf3&PtjfIl?Rr-WRWlG4qFp)fSzsP&Ws)USx+wP77)fB~})Yz6D z;I+W{`z*J*pcsb9^}Ri;#{wFEe6)2tO<*b>z{$S+%-TVX7U5+$68Zd2>^6LY#g*VJ z7Lk!HiPYYPZaCusT~mnA;(WuSfq-e@@r*84EUzp4UQaa$f4MfMYF_dB=HvZ*{y#lhF ziey5pdkyP+Y|kQEI|4yVzZd7JU_OBXQ<7lvd{(LyBO;S&y9`yeR`bIxISVG|p?2>O z4{sfVmtU)Xf7ZD8#waavh<(J`_4zk7+nJBINg}-XHQ@WaDR$$Q38Km@90W3w=DKBo zpf!qeM3uk=GmzZarauJ2+`~=#QlPbCVK+3M^18}0QI&?gKO!s3$woM9H`MZheROB% z8QO~@F!~hQ3EH5aDTg#OOn!Icm&3{+JRL>S0mqurfAevNBqX?O7|`7LXis*qFQI($ z@jeX3f{2G^K=)firQ%V9S32(#@;uc*utAwR|I*)toqDoTZxu)r4y{hwu1sek=RBLI zy}qH;X>nam(}0p~93RfEFWU{ObB}U%-3y_hE{^LkH@f1yYM7WGPHuT;=K;A+4~B!Y znKDg1fB(wB0ax0><3s5g7A9P(AiCpt=<#-k*;eXAIBmE2)rVLjZa1U z`J*8Bw6nNsUgXh7^mjR?XpQyt5{Af#w#VUdf2uR*l+-pC>QYk=eey%#AcH^qfwoa6V0@9{%HlQD43N+%yYRL7SHX82gvQc&L~eWIL9Yak>6 zkS9?J5=u~x^duK;x)q53D%|SB?Vz?=G=l6E{P8u1>rMZfHanauO$bpJ*7#Ss^82yY zRmOn*NJkojde>MNGUf4TEk;(^fA4`$TGa>w)gy*;hI_9emW;3d>b@j&KSbX+;|{Ok zz-K}}#2%6ZDs`I6lw-sEV;@XGPz>1RFe7ju!aw?TY!Tl)xX$5n?7)Gm9GJ4Pboa|+ zT}b|(GrJ8+#;2(t0$&yUvQ4dQe@t`;PgdHT|H$5Xk-y62gS@dm*W&cYfAJVjg2k6>FlTwS%b7$8)BHP^~hp3AZ;N1k1DLkfu0t2+a zYx6a9Epw>qL;09Fe`{2lSpAeO4DCFoEHPm-yk}CoaGAkRzAe@qe*9UEzz0 z%O_&X(b-j2S&IrreDnk#_nboAzujtV z7(NC!A|+67)G`4oWR!HhV(U3oeSruL>j3l^O*b6?uV|C<3f$@sRb~Qp)i_LUwo`1LcPKqG1|~|CBCok zEacQ=Cu#TGS#Op3qx6q9P4Nq}7MdunDr_L`>*yYWe;u?KmJzORw4d-&i)Pi)5#GOY zoEq3T;@z{f51`_&&5am7h@y}qe>(3L5Ol$Lo3PEx9lW#8;=~cdB*gJy?JA!Rt<_I? zKKU5y&z?!JUmhHrAufu^&=S<*rW7s#k{pN9+<$K0J$l>A1Foof1g3{xkcGrqJ0GEs zi@T3pf2T7DdUF|UZs)}~rsz_CJOA(3)T)^YDX#41H1J@lb44#&VqlvriFv+h`Dgal z!>lgTr4(=c8X+58V``8InLrFE+sz2C!cop-N4P)YR{xkB>H>P7I=lgPcsq^#9)!%M zbNJuMpnay4mFIx0l;R?|xO_@^Nv9s-!XG_5e{(#{wQ_}3!CF5^yJb^qn%#ST7LK&k|dRG`MTJvKA|y?z%h2aMZw0<3v=Gyb ztDD)ARke3>>^~`U*|`CJ-Kc8k#0m8_2Q5n;L79cE$BP}Cx$zWg*o^_(n-hVC8og#z ze`f7P^RvB&^8}`>t4Ij*$G<1Rlre)}P#a3xh1RvG`jkURDUQ~+d%!oKucJT~CeZ@e zn-p2{Fmxlj(8>QO&Ucf##M!-f1gFo*f`18eoeyN6&wdn(K+q3!y2Nt^&DQ9CEC;of z5>Dnn4HCguB0lXlct{_T3lMB}ug1#n1sp*CoqjW~tI(D2q18;y zdfRl^%RWed(kJY?iPbdKQU%fUf7qAA;2pd+_Q=clT{!;0EY-1g0QQi$cZZSd(Z}oB z)%sB5e*r-*(@Dt+LWOZY^-CeXZPzYk{O|jr%|}+vjB2jo4eCY8>a|UdJA13L(!zRX zf0tM6K6%uW5_aB@@eNXIG_q~?niyqzn9XQLW#gw5z(X3?Pc;_zqNcYwf5MQ>u2R@B z#9{dOT0OE)@nQALXx_r{=uA)!a(_^c3hw3% zzyKi`GWVXM)V09L%UG)>`@TSgHoxZR1hTeX1ohB%5Y`aRSCG&wc(``eDZ0aWt^T&G^7L1P7 zw*f<@V95(`=Mg$ZaU(XKY&pK9$M)s`cS9>N#BmQgcO3f3pTgYMq=aR#?fA7NT%#7?T09_~u z^SA&YJ+$DG1U$rr_c`!?@z75S_ozRCA45S73sZILest}|3eKlVtW6LiR}+SKx~M$y z^2k~!1thfFvO`9bF>5FFQ^UD*D#Kq z{FsT{fuTd+8=oPSe^dC0^(qg$GU#ja32L|jr9k|~YPI&g^WAc$Gp^hmcPpE!&v)0U zW9RL3VKblsaHPJytD4Es5TrI_J)2}?=9nuo+&@LajI)GNgLphY3L#c!aFa)7V1=nc z#2AvR6mcJ`}-{BAnNI<{gk|Lf6O+SKCbt>On?&v_ct2_ zpY6|P($V8M?K3#+pduO;P9iP3F$)3hpPm+5vCI?2z3{`2QhfEQc8z@D5r=_EU4h6G zuH`oh0ri%9NAo?`POR+TXL)}!Qd;JgC_SY z!XPSo9PKY5e=#-lXMUH4q4bdl@Hpj}m#v*+%yzhg8xvNHfuHRQ^L63R6-4K!@;nN6 z>IcUi_CL4)yxoLuD~u=y@88-zaC4n(c;#a(13(TZsHZ?_HwgVcVsr^$Q;vgNJ* zHgLk)l`QmI=p2WgtqbvGUC~Iggc9)c)nFDK?@<*&fB3EDEeg(oFe+G-{2$+-AxBUV z)W3F`TO7HWEH3B4DJzp~Kj?B>gdQgg5o6bJIDrKbjaw2IVoD_EVfsNr?KCsrA-Co9& zMJ<3wYbK~z8Zp204N0omTTRxX1W&YwlSD!cP4_-u4m-PG?@}kPI17R!?R%=0;(5t& z;#4=(letnPawWM$yxjGlf6$kfti_`a68m!kfAtn|_X>%5Tt@PKb&_zNEGD5JsndhB zQ48jaCVZxsG3MRiJLzPamiT5*D;$9FluN$R8RI0u8g=L2BorLzvOo$|1^)V|Jl=<4 zh+`drjrpMv4-Ct>r**0MW45FFa*Vg1u<{MRF4>)&e`zpJNx8&jAEuQf9ex(~YZfVt zf2q)PEI?j{MBF!jZy_?tqO@duY_h{S&0x$IqgaE3l+vOXS_!OYoVT-uv(EZmhT>B~ z_}21#P6UaGj3+e)?1!EnM1f!!cOF+phT3{HizF|$U|&gGc3hT`e&k{z$e{c!nbQBh zXQid(;Et4);(p*dQfH84XTrcH=?SnTezE1E{Zw#_$dTI@Lec;e0%#N9!W2c@RnL(jQ0`X>Co}!L0H1vaZ%nrly<)rtKQt!`wB-ORv{L8!i2o+KZ$G)In3Nfjdulya!LBf@yHXI{e4+CY9!mw%{T zH{sf}B*Z-PT`Q*29aF(c%^}3H?*-}{bvm0bxM%u7$V7?cxR~4Xy@Wetz9jC z{FmO#!&Lb%2dEMOj%w`imEh(h*zeMI%1yZkG#5H(5jX|&fGc3^(;^i|nm7R_#12`9 zTLt6K>)j$xgbCfm+XT2%rxdjAGPOiYH7s0Qzf{h$O2?5;OJVmiGe4u4r1j zd+m8}r~{}P!s2b1mk;B*e~w@b#K5Y`(0=&fU(cCDTV78I;W~>J5v(}g6=jQ$FhTtU zNN8Oo@U7xnSEd^JUWGl#V|HB6`>Y*UgJ|PfoF9zbo>xwu{?Nu_umiu~gB$UTZ6O$i z5wRtRQ8Oc;pht@{qM;1A$`hsErQF86{;@zQ<;JDf0=G|*Z%IQi)XvY zA@cY_EW-`=e`m|xBG0<@;fObvmB5y}TUJ)_mxewPSz!}^YF^%9jh^x+pqdYuWgE7l zfR8l5-~RWWQa{qzU*2+S4&V{nyaxKHGrYX{KdmK#FqmMicV6Tzh@Oca9y(ekdx?w? z$#R`&L=cimX}$Xme?ACmBdj^r&oE4NokwPt<2<)eSW-+!=N7!rdyEe=$bUw--?lZS z%bhR8_6jzE<2(0Plc*^;?UjkmK(B8DO{~HE3?O6Q?z0O^U9Vl`Jv`)sR24DZjUIYI z`0Yq&g$!~@SMx)}t3Xn7Xs89xH*?&~E>U!J1({EOuSG6=f9D&+qW#HfdC~iO(;{&H z8S6GvQ6oUxn>>$|B)ZnBIoxMvfT(#Qgj=5VLR8A+(_Q|>KA#R3BP!|^OlUD52m9%j z<8hIcc@$ks%dtm3*rol4&7DZ3HQnhqpcK(njz=^NxPZV_0yz8Ur1eY{Pkh@HJo%!9 z6Hs+3IA=xbX z31_t4hMwMhA!eE+tA$8A}txEPqW=q#35q3HUvBm%mCiiLXQQ6PSf7 zgY!NvaB6y?<5gw8Ufy!wN?{V3FUG?{G7TkWnPNAadY)zfopB2&#sNE{>NvowEReWm zvbG0njc{%tdd`{)F36c=&G39D@ovMl+P<8Ne}o)uLmtag%#L!D{$O_bdRnoj4~X|a zjz~p&<7@Bzg@Ah3F;eIIuF5Xna9~ z-j0_b_4AT}qaOYChbIrpSd=s;UIleeJaNk&lr)ElVQSD|YJuVa_A=upV+2Y2IZ4;^ ze|Ue<(W=;F0u9D&3sS@{-ymu;NblO<`n`I^4pj;vCT%*58oysFrL7tPDpmvnd;sHV z@DzoztV#dBmQlTTgW8iJPWK@vjIHGQOj6jsF9cCeXgMvX1pYK2hO*y>9!|M12yy5< zvPsgVhPSoSV8d4~7RKmU`xLyrxgLjVf8v7cwI-Onj^Hb}JA{R%T^ri*^ut z(;6nfWE#R-|5WPy{e3IsQ_d#MS(7ZRNJ^UYJuP7Lo`HOAviQVkILC&j<^x3Mf0qVz zue;{W2yUAsQwwybNAaDVcnA)hdBjklvL~XnPZ6n+CUtdQ3Ff7bdPp?4IRw*ckLtdP z3@&LZUtu`3hynNk3)%T{(v6IrY&;73+wj~gNHD+qc$J>}pi(U~oZp0A)gtoR1|9pu zH|(2=o6D-RYKbpyFO=ug`D{w9f1>B0`@q1A-9L2Ns;d++HAtg(G4;&!ff!G;9+B12 zS0u3z(MQKqtXFySt6#AKY)GS*5~VVd_7I!lO6|Dzpv71dPp*SUdHpvO11_PGppkKx zejD5yy<3d>o{LHznq#_+e9DA`Y7*KXpNk&QDw#(UqN^s>r?u-0_jMb;e<;vwz~A4x zUq|sXyKuK^8^rawX2XkIC+3+>j&h|vY_&g4>oLzAHx;a8+s+N;NuK9vDe3HDCuD)G zaG5qZRQB3~X!`a^>0uph?WPU{#-10UQ4BHHY^W9vx9GShGTaZKW}tZGJt%%_B?<_L z>LhQeckR_av}>Ia2ad>+fA#|irTX@{FtyQHz7!i^*2-OxDGycwd85h(A|^_}ZtbBZ z&e=o1lp>s64>Ex6Y(HR$ie{Z&OKRkaQPiZIcO`*&SZ#WCmbQ6SSg}Ae@gbO$u0<9p zfGuRG^kT=1^GsR;odc#Jd`j-bim4IMj_mPw!z3?ocW4$SuS;HGe-&6FeRmpz=-SB~ z%WsKZ87mEOcOplBB$0NpO~Q)|4owt^u8Adk$NnjU(J9_8M$#a?hO5W4=d+hoBxYB~ z8|Sn=8dw9S2%)J{)TRDto5++?=D)ER(l|SUO zofvq|s=#1DFzauBe}{wpl<$5cYY58kJD67 z=LDG^I@)c~ZWd$2F3;H?De6bD=rH;qcH&fFL_G|>sn+4?{4pxfD!-K4pQsA~lm7Q; z-z@BczMSp1e*(@;m1+AUkBa^Wi;rvEU(RGT4K5!O6v1lb@#G@U?H-4Pk{A2aB})%N zh?wN-6*TYO`y820(^Rp1cR_M=T#HX;NO_Es4gqNGmb+9I6PMpg!(VLu`8sy(ekV$v z#Aqd%{!K;EqX8c@^}8oOME5HVN)-fhsQ1iZ#rf2mvi>+D;A>;JYSXW$ z51tw2)@2@u34H}{T6p-EQBtznkS@NTgxkJyfzvHW-)+=89ke-baC{bcG%nt5C}n9} zRuzmjyEE6c`mY0;AWim<(|MxTUENH%A^8xhrP(zS3FcXAQnFH6ph?KDw5IGQs22Kd$i4XqhFG z1{Cx1OlJDygwlD5B$YHR)$^4Y*86E8xpl|Ce*j(44N^S#Z$as5aHKeF(ErL=FaAk4 zv(`E4A)L~aue)->lK6y#y;-|aQtEU(iT&qq9(4Lx?K{nCgv>|w{@8D!%DR8rK=1HY;RaYJak ze|t}#&BXed=9idUhHy^HxdSa$;DZ6Uc(VE-BD|&o;ag8lyd0kKnoK{-cf@0l-43Bz z3|01>&=|kgj4ag8={UQ|s>TbSA^)v~iC!w|nuZw;icYi(Nf5`WHSaKs|I}3Wv7EgePSvjeD6y1UyCg>Nqb9(QzxS_w8Ss$WI zUN8%3T(&xBgCJIgE>k1YP6Afc?CDh`SAKH~#Nctf2^Jrt)yofbue#pjX&i1J1^UtD}JN3Int5i3SMcuqN|3IFwcizM51g1I8^gZUSnsLiG@_#SgLri}yP&cY|m z1%fbay+8+iO0W1VS>G0aHB%PdK?F`SfIYi0B6gG`5MVn8c+Uf~ph3im!kW#F&o z{CLs(Lg-6Wf0*ge4Yh*yGj{G5q1XNS=&Pi*#2~71n=)cj)*^0BH|n`w&u|p+a^yDf zI9)Zq+`z$r$Eb|+I5zX2DKx2<<^gCfiAi!CSR#h_aLr_U6n$KBg+F-&r;w78f`Ha?r1bhrA~ zf_)UrBRL_hJuc4^O0`gjuSFYfyO6o2q4AnyKW@d zyJ&Fo_>3#?CV39ROoz{w;>FjBW3`kduwXFqm%zrPX^0*yX?Zpa0yld{D7BhDo9>EL zij35HU3FcBSuD35rrjhEo4TD0!}hm0_`KcYeJ=R&RhwjX^}I@XPfA*rZh7Xvq64(9^{)N01|Eb{ zlUY#9%2YZ$iul72u8)ERLdstp>n~3BNOgko$}D?A)r}^-gvMaX$1w ze-*tUlySw*1x{AF9*@X$A|7F?PBLD`al@amT4&#Bim6t!6pRzWwp16buo&{Wx`|8o z@Stb{e`o6ZGTQaEUtW3;qBZheboX^>}|+Lp*}@>{0Ve7}?< zF)Q5Fv0fvZvXJ224P5XWwG%MXtLJp1}SxGMYm z@rnPKpTb{vn1;s2jh52YgornYGBdT9?;>_g+DD>BibDU`H1#(zr)c*u;4b`ad#*X= zc%gKCnr?zZW5^Y*CZpOY$ntt3y$he~9)Q>sX_3{c0u^wL7*bNq7|ewTO@3u9e+ZIW zY;bBk(j_v1DwgeF5p#4Z<0PY&D~z(dOQo%~u3O+LbwdUn$qjDOXs{KZqu zTQsvc8{cUXN^WUt%?@1C(Q)(hf6VVX=@91xIBOt9k2-=cKB4oGS z;dRa0&p*A2Zk6~(`#n!uFalzHXi%+7%!ny)k6+=Bo$jsfTC^U$Np7pp)6OxNu`jm1 z2|U1#TI7+-p#9$uCikpiY^>#uouYA$htRQl>FC#$b}iR3_)VYd14vlPylRt&a4SMRg*WyI)%o3as&`K@{0f zDT5sD6;NrP>9e9_L=w_>6{E`9FgHWR7gVC3yx zN_{|JKrl+3(QRj*uD$z=rLXMiJMT{b5u<^IiEN=1c#NfsAgy(h?SZW>CFM+DdI^0` z2KKWG5JzFAhYt{hf5&$DXS3qCC=(Yr=M+giIR|}ix#hG9_wwV|3Gdcl9RiP#kKgds zd#tj*aATjegt?*_eOa9vI&2*n7DvmO|j+eml_vfao%}NprfX? zqOW_#pPNl8r(UTO)0Xc`Unz0PeH+plAzRA{kLY3|Cu=-*fBe9`yD{@E_53~u;@Zb> z>eQFUFE@mDzLwZ~19*Ib`Y0{3XT&opgBx-*h5~PQ^oeiqdl)2$p?K+J%X}+vtVDbP zR^D=$)xKg#^1_1(mwWc$4Rln8>_y?|FTU_DMXe5C~zThY;}VG>oCSa5qI8z(n%wM)dI52if=wL7vp&*oiXE zcv(G{j)&GIbJ@IdokfJyBuEAWdd>&#M|(V7bn}msmcsRLLDjg5sK0jKsUAKW6kroO zT-|#4eFHg415Lu2~=c`I@Q(feZuh+G{lOrDr50l2yd^r>J$!Y@4F+s$%9Y9@OfrS;X^m%{X`;-^~Hh_XYRa z^e&3kfA2kVA2HBx>wc=7b*^DbSM7X8&vw2VSz2EHV=@Q0siHS0Ypq?p-~ji;8uXLu zFcs8egRBqEAMJD`XB4C4TBayWoGA?m<5RPe=n{NTAsXSvnsy^cYi0i&SFubMyVbjd z>=lduIx{O4550)Kiuf+H^h#rEIZ3`l;g(gnf3-#M@AV_ELS;GAlrw zhip(=Z-R+m_G0IC4BD_@W(#6va|gyi?Y;8T=st;3P!&F=Ch{U%*l{$l?ZwR;3#^FI z8P!?_Fv`#tW1-us#T^Tr9U{9;{DAHnf@6WT&s(V|_+X7~lK*irLzmP>f-HB{@lk|* zf38n^>HJ)JN;$CE6&qjXJ;1CPHom%Ae6<;F1n9!&w5^Z9@;oH><+jQ=z{DGnd%$*g z*k8gOA{y#p>t8T@{gds-1b0M4#{|3kgCU;!IH02X7GO6NTbOx+@PzSHG8=oYK{^yi z>}T}YX{dp7=ylP05{1H0iQe>;R>naZfB&;AVq{xLvUawpRv`+cvc3stk){P&0vNNV z5+JM_t*x<`_9Jror`G4=UdMcc^+y9T+%9-H+X}X2#L*7LTwwd6tyR{af4liuOpJ`1y5&Nc>3~cpZr|>3NSy{E8@&h{qCoL1 zEf~0{Ni7=Rdp@TVOtkN>_A|c^ogoAD?WQrS;UGcDjkp$b)Y(RxgSf4mKMmk~csN2V z=9nFw%is3eE9&tBkTk++Ff9jq%GcRH2VanT#1;H%;fiF7Kr88w`5~2)e{fwH=`Ib9 zDaF)er~BewqQR+5yUjd2+mjSU+aLw}X{XSoJl49Os2{1UXGq>3P~1^ zQ$#k=pYTM}AtPW9rP)(Fekqs~8P#iZ()HvKkTK3NZ#t}A+3$H>@o(lFd6k?EN3!Jr`K_iOn$PFWNUWY$JV0l zn(W^uDb>3W_xr>%SGern6{S0t;SzrwRzAC$Ic6|PS0-O$G@#(&xSuZ-fV3v#nVBbbm?-8sojtGJC9QZ$SDGV8W z_~In`eO%N6k`$?)Id@I_{$ogq3~5Ry@_dL(v*h(x)PK^+*rs(BAb|j1 z(#9fwoE2?&qQI4di-J6#@BUN5LCrTild|(XQSM50e+f|sZMDD9u66-$M7q2oBrsHG zSLJ0WA9@S+$35fy_n=Ah>%cHQA5mBt^ zDf8Ecf1N#alDm-IGX;%wi4s9CsXj@}_wgSsM$_oGe&UITLpCIhO+a8m)}Fk$nuAvg z&YML!XZWyJi~fsq(b2M;5hIdj^`3v0^goyP`*82ff8_JeYoA||gffbUut9PA?y#3I z@K!Iuf-H8<6VT|yF?2ICntu~$swsVga(OdKe@FFlF>ro85b?_{J*{_lr2ke_mp{!* zDR}3H6z3AwWtkHvoaJ- z&Ip7~YD-n+57j3~W)7bel~?c0QobOqh{bfrk~{DmA$X=!@<8cKc7WCl6i+J8QafNp zWenH*<=USdmqP4nIsUqJ&D$^)>CV>0fIg8!vy6dY^)~dhg6!GH=>He@d;# ze=i_KI$ndW^&1uyC!bp(qSbsq2}B`=c3-Z%?Wfv2TTwL%{YuzCFxC&b@;~JIsDz`t zOI@=AgW0Efc4thjS$T@c-coLK$KQicEHg{mYZ2cZHp~`_?={$D{TV7{b#l)U5V70x z(5Zp9Df@vSlN9v2qJzxlv&bb1f6pY3f_TB2Za5-*7$Tht|9g%0OmDNi4NlvOdF}GF z{{)efHoOyq4%_#!d-#={8kIjDb*rV5f4!@4+#C2^P93?F+pE$*_?JUEqT%>!8kaM4UG}@h3gfjP z<3B}rlMwaKje@nE5Prmt6F_MPc~8k0UKt^kCBp~xP8vU&@I{`0`4I8wb^?yBpu<89 zdd#wsoT@$X04(<%@?(XjH?lw3B4DK}U(zv@jgS)%C zyE}tB9KL^_*b(RI+^ovZmHAYzh!q`ORb6jZ5n3R@Dy3ywkK3eUZp`!U0wzmLWr_oO zi`oRXs6D`VD;d_F!9@+|T-c>*0ck_`6Xp6pVBJm19jpfKgKfpSVC7Lrr1UtKbnZAv zgdKj}+)qKIeU4W+*E23I*GmmV`;+|B?~bJrvvK0=!8q+O*r`|ZQ@M7cCapeL_&E>D z?wPO=iP#{5)Kt@kw$Cq+3ox*%oSB-TK?*6Ql!p2uSa_|in(QFiTy%Na^%dwyYgg(o z8NWO+jS6(QSYKIxCqaig(=^M;-xQ0#A(l|o{Q+lhP5#wd(a&o~!YBMXOc6^=?ZCI9 z6-gKMse#kYK5@hACCH?QvXK>y4uBJTXbY-!OOVc8n%+c7A<1tSCXoEyy6>42YUWxx<4<1)p9JDB=$)3 ztHo+ntn+kf81e)6l8s!A0S^nURx9z|ajUo;4Jl$pKsaAmH9h9=WfqxXd97dwgp?O` zzEGH+dQv@@De9l#1F%+Mq4f}m^r(x%>OM1OF$VVda72FL)A_Gq7_p%uIE|Ojgyoi3 znplQNU#+_r=KL+-uMuz^YPN2X=}pIo>LF3L8RPC6iQiAzD_ZHqr6bL%vjW}#F(9+D zW6ZvMeltC{gqES*b^J)8x_opA#`O`QH zLw0&K+v0-8kCKLzLf^IEGIJ7E%zVubU6EL59<7FupINA@?8)ZvPRZ6Ww$z?bMymUM zS?5X#qSxHZ9pDasm9%w1qmp<{{)@}mArPXsvGtJ^uR%%=TdQ}?oy%kXvL2;=v9(C5 z7hhW4^e$B3u57<5?Q-C^dV)9b6#P>>^$kzatog3jMA9?hP+^6ujyCki*Q#z=9DNbl zhY(EPzHn=Vq2j@!5VE6i><_UgSf=nWop=THF}df3K|mlfBvmdXI0P9{rCy&y{|BC9 zi(4{DZBWIjV8l(8FZhNpq{T3s@$vY-&j)o%gVzJx=heOYa+;)CqTJ<1lp^M+az^c8 zV|TtMNP!h8L?fW&e%ZYO!m)TK3N|l*^>=|CKCFwQZ9rbVU{2V!a3+Fuz*B7zH~h$a z%v(qUJwPjd9ld#uz#!%UIi*t=f+j>`shuCTDxW<0#lDf4*Vq$h9@=fZ%jl-%A;`P) z63}<$p`-wd79`Eb4CDOZ#C|ojg!VDT#O5T)`AXD%*iW?(95RJH9=5PrQ=sy~&RUk6 z5Uis8+m8lYA3j#QF>L{O!CX00RV#d-Nx#bu3pfG6PXLO5mWpr_XLseK`_ZsV(#Psd z{|Ri$AiwEPU4t&ca)^(q$dM2lueMXq$)Q+_L=g!;-&z3)p_INpU z_=jx;Fz}x)wxC9llR+EAt=O0Ak4qZs0|Xb3$3YiDknNk!*?A3G+2Z!Iv9DEyRgLWC zXT~$y!U@6NU;=?8^t<9eB^em_-_KW4o$o-g==eRx(ucG@wCYt^!mq10I#q%61Bq131M&jwZiE66|^;_qRXfVI7^{kp#n#bZ-u;PzMsC0TzKo zc|qD`n_K-W9R{FE8sR^u)I~OrspUJYm1ROP7l9fal`{PF@6BnTVs@v|xusq)GTkx( z%Xs#l(nd7O=<>5)aM?_P7@8%@x?5n!E@51x;)E-+bCTIamgN2O<)HNa3Dm>epi=W( zT8K%r@(NmobL=jgs@Ea`t}1ok3Qj%k(rIkKP}4wIlvH!t^P6H{8haa64b^gI zt)vci99f5=L3Y#~P_({vCIgHv)x1jQgoQ!yro6A_-bDMS-Hc(pi7#6$$4j`sNX1s!6w3D3|w2J2;m(-$UYB?d5^q%=l!-xD!Luej4 zJ_%jRs6CE+de-GjUgUPH-YNnI4UVtgr!9I~U)wRSqN*=A*^r(>%7{%JpaRTbe0$aZ zyW|?#m=jx#xDuX?#K8%rTS^M>aA@k4IPjxa&527-E~vJ|3MJB02b2kuZ6H*#Qb`ik z{S>tTYhIvFgan3MO(Z$Yq?xOq=`u5++cYn` z-LuX8^)H-M(f>=cp|hSwWPxRrGqbaBwj|=#!nYP|gSbT8x`2HIGOcFU!t};t@n4%AF6cVrPF_49#Y}JM= z`7ko*Y5J?M+uAgtq}%-9W-}(f@qRg4&GyBgkXrRFst17pRdS5Nt}qUE^r}TIR_#Di zI=bP8jq5ZH&=gZlDT<&7N5MN6WAWW7mgg2rkcFDcIw%ey0yhpg%SRENso^^O>(`+~ zmje3} zXJXWG2zHTFyO-H_D;jq;6vc))iij``|EEQC3DWTJrEu$>v&;UY@e7zjGh>rGu5EHzZlZ z_{D;Xu&3s9wr1gvJ&?W~vO)aJk|@?egwi6j$ZP$x@PuI^iY6)oHw4+{5QB*cxoS-Q zIdf3}p|#rm@KYKw0!*!mh~ppWCM-A@@N|)sLO23a556~k^yr;Ng8s|O~wOzOr%GF z#gI~pFql;~OA_(bOKU;+`TjZ~Ph`gPZ9Gf>i3Jnu%3Tdp4=CUCFy7?SIf*#6?}mdM z6Vjq8Ga=MS8-EIg3PBfO*Jd$dbmClc+I~;2p!8`ZJXapYh0q0S*2a+c@%w9uoGa1R z>CeJzCT!5zUWNssScSS$yk;4WiV>75hwuo@AVgjHw}Qu`@c+S1{unxgGEHUTyCX6O zNUe4I^?Ia}&dge__m~W#hA7=t5~#T_A^pCioLdvb_rTsE`m+a7$6*l7DwdF3sNap`%lihsm@niTQZ`>uj=pT55gTKx#-uQ7 zueqEN&cGIsGsng-~!w>|L#&GMkGIY8LLaba81=J$|WBR|zRaNHW z`>KIlVytOsumZ{4y9s899w!baRr$z}=_Q!7sUvu|()~$ZlUJA3g8B7e+Pag9euL?B zhsdko?%-c1Y|;5h;<^7I;nOO}q>Jj3x$7(?oyJ^iYnk?-R~>@%!N;(csMh%w2@FK& zHM)=zT_DC7$QuZ5oxM2#s(!;NjXS@(!-vRuY)V#U&=t2f|Ccb0?sosQUo(4L0Y4`VDH)y1quq zBlyB;y(|A8dSu$5rT+!B$S!qy$pt0}U+}1{P^PGkdyfXGfzn?9BLXpziZK<>6lk4y zibEna^R-#meF|$Up>H-*ez!)i1gN-Ifw|ZC7XH?ug|?)X%}{M(EoQCJ1nU6xR%oRp zMStBk);(|Nvl1Vb5iD2epAcLzY`@iUSh^)T6>s!t*LyqFdqe^ zp>&6HQJF5R@OMgphzxeT!40LXFL~5VfQu19&a%OUKR%?yKNaet+uj=1Urv~2%+K{_ zy3sKC!F55EJP=7gw_q{X)~lWqu2R*PUF!9^ONwNR5YcN7Dkf|}=N3}k>EjHMy$V8S z7s3v1DwiL_aAc#UoRc%)qfH2s_Pq3t}EcaHQ}8{z0qAYKRvxsk~;W+f?({ zh7K6;>F69%J#zDiUT9T=OeR0-uORr`UO-}C>)O;|Y9fR}SOn9FokVciWCk8fa;Vm0 znh5CrHJXrPcbe#jRgV@#4n9`mB&q_s4hV0jl0@ewk{?7Tp}ry0fq*}gr@rNH7Dd!s zYO9$htn>5$>^bHVw^W9*Swf2?P2(&WB*w$=Qb?=OR}&TM&GYD)Y@p8rNkS}yYsWAU z_1B6D7}w8x@HmrveLhBQ=(E1y1*xC9SWDY&;!|e8{tS}ga|?{<=b7I?n*#P(DqAtq ztP^R^2BC$i+{r5Z$YJVOp|}u1>G1Il3XJ@I4Uql?Oq}J`jkQxrD3Klvw@Ga!K1TgG zr{%Aex&3WG5T}ec}x;zR>s#53ymXOLrjqfcU4HA=KRZ}~~8lTZdNr|RSaJc-(r z={CL77xke2{!q3QK|CEC&gJp@O)E*>IE0lU*{*aaqbKS?LbI<;q zKbwY0Fu*#(yk0^3MD4l~Z*(+s+M+tl{vY)*AY>4B9AlYD$>p`Tg+<2z!QZj|<8^*X z3w`Hm%e))$xUGK-`f@4{M;Ig)FAQ$CmQ3VFA_`IC2&)X4(-e^lZD^ECK^JUQoFz4t znl`Xsf=dGG#0-C0{V#-@`Z86}Qisr9!YXA@FZ6SPS>ru)nL8-b&nPMkr5#i=+S0mE zfJa}cFES1$-T06BK!hjqXjEu*9jfG7^3Z2gPY{VjBuHz#G0)zaE6IPOZxR9xvgW*E zbYT|#b()yM;1W{b8)=j~FOsY_1NO)QtFsj*`G`_$q`au6JMg%N=T0u3v4zZoMnN6( z{233mJTuYs7!L8cvCwvtWZ-Eh_xY9uuz5Ldz{sW20NW;pp+H}x+7xX`dI#QFlvrgM zVU(K8novCP*i2z zpC=q1l2X@ks6_l1Y6p}4BofiAIQ^F-WvM%4h(rUG^3JVn_Avk2Xe4rM;NsCW3M9vb zR@6akFN22DidE6T@Hr&`8eIa(B|J4cbLD`4FBxmxh&ts|30yiYAs&~}5oo3Kw&NGF{lZ@{8Y z2pf9b7o+a>0@!q(Yd?hz|2ZNv?YV>q9djW~kef8TREyeqWU+_bJi5o(u_mIR_~Qt& zW?zQr-W~`bpU+BaFy_s(1IVnL%*UW2LumWqUQChsMC_;z4&w4h_uiGCjV&_&oKtul z%wVC|aLwrayoAP-_R^Vfn(R6tx{+We?VW*w?k9@F5SdB-B(LB~K6IO|_UJz@;<;8T zFkk|DvTtVqnTdkBCA;Ew^qC_Be_SKbZ`r1yr&IP}jNZ;*SmIKu05Wa9{J$)SrB$$b zFk2so826tacq!%Qj&QBceQ$sF1j)$2WCgN|cL=0tnxpU|K9F>T!9~y#jyovdc`6xG zrbT7;!orjk{z~5#B$5$xv%AC9DREc_S=7aAtgBLSuUg*$DFy2w@kUb(NWO=COvC+W zWsnbDg$yILUXbb!0bmW;7$?Y@p2IPN4_;2#Ncdw*G_4nfVR_KubZfmP!zgY35>Vm& z;U%br5z-=4q&u@nvs~{C=V*$q#C(8iFElZqS=dXVM;NyppK1@rkU!&*`~8iTXrouH zExpFYdw2%9+};wCdRt!V>H@6Qi?+7bn~N6^_SL?OUrV&P0)(MoF5#oxJGqR1OH{oa zVRbn*jvt~NTKcPK)+p#Dr+kpi@F$5~vXPX2fdO83dvxQa{n@6n z?1)2x&Ma)022dh&LpXTAmmp?}rWc!qKPjjwEgXMohiwT_OEb1G()a4+HLc~VSzh1i zUEu{B_v!i@R0N~5roCY&ZSqp z1~z?V0lC(S zs+9WX0Hspe8*>iP^rQ02j)1Nb#ts?CpH!at-3Li7@wa>WuR z{125WbEHp!cN-=hLIuh^H;(%&B=W5 z0FJNEkl#H_fiw}VzP*#qX59Mw?STl|O$=q_aOvLqNHeCQ!tu)F(m6-_^`pOUUtHZh zi4BkVDqkMo4w4Cd&%8V7yX8L_x;G6tw`-M{RlByEx)_f4XyvmFwiFnS_E%r-k32a( zyPg$9?JLf2yd77K+Mh+d4(#DJQnvs70SE}>WJg=HZ*;vpKAb6`jk>bt7E$W09~<26j_YKD@T%j356GFUVW=2C z^Yr-f6H3X2|IL*YMeV^YLm8JlKX5-`v-7F16!huL;rSmqs2*y&V8J_4fsk)TdNkh5 z>|F}scBWrCDF0(L!7>5o&9%Hdd_@^{vO&hwB;I^~|1nam(6L{^gSi8Rqeo4bV3s*r zneBn^qX7Xvo-YJ@Ac_)fBp{GALGd~7}_7&AL<|aJ~f}4dtsX+K9{~LfV+Dp zC(|A}RrGqb#`&ke;{l|!dMlAXn=bxH^OteB0let zFjGb1-fig+vR)1!+?VWS$@byUn&2+b0y+8nf@i@Ud;3Ik57%JSW<{m;v`7yx_dl?X z0`L^eVu+45MM_0F@uHx8uDzL6P=T$T*4`e<+4Bf z3d(DD1Lfq;BxK`e0Q-j%Uxr?`JaBkqqGn!}N2}X6V^g8VV!L8|6w}&jwW0sZr`?vSEAY7lK5FQT z^BJbnjTW^Jm&DQYj<=}Yu>9_35R%-Fs7XA3ePj?{V8hD+5Jq~@@5jk>03W~qrHsry ztSBhj`7Xi6kv=yYe*SWA({6XjA^Z7=WO&X0Iy^htUjRB!vTVoy73vcx+g$97UiBK{ zBp&>$)|&mdnkmmO0(jomw5;Z`wUI9$K6l3kFEO=C0)!gT%mH$-nky3@Wd?QLn2 zxe!y2`NyA7fJKLlG@{qgxgk(a{ATd0$C|M{C8xw)sj){uX+$w}mNXcUqP9-!%?)l#*(Xf}?c4U$vx^YbsBxm(yCfCGJqaGQcN zlU;fL%vHoAmCY2LjQxe@r<#^|fTN)!*S9zu(QoIN4)4$V!va#2Tmk`RQBtAd<-Bn{ zjglO?9)0Lo`MsZ}Yz8BcsA&u@T~VQ*04kFF?$>IQ0<`^u%?wJ$$6(SWL~raV3GFOwaMQ$B|k_z1e2&S}cXOmp3us z7dMBii!b-L0mxatpL}Uf>gVS76^POD6D#AfQTiDc_j(GR#G z0}+fAAO(Rhy?iT55)4xB8Jj-)fM>}qI=ZO%)oA^mP-WOEp*@o2J%HgMdj;Um-snj5 zwz*NO)LSRyrTal0Son20Pv7N8SvGd{Y~H8%`c$oh6S*y8Cam!`|1wEWJ07NX{wH%? z<}K@N^ZxyD9Kjb1LsYS5OAi%%S{vaIOiq)}jB4X70bfcWHKi|$e z*E_O6%Uzg^y1#9EWn2j094_^0FNjn!EZN_LZgqwdF?R}TOJQw;esJbNa2NkHoZ}C= zz>rvKg_spDEm`O?dni{r<4v@LV*TPdTwXHDT5n_!aJBVTQOpzV z3{JV~Ryxf+@FJ0=XH@e%OP#d`<9Mg@L>i~}cKafi#vIQk;(ns%(!}htqNi*Acl?op zqfh6xr|xpTP!Y++FbpF2-PVY48=yKXUVp8zKCuAFI?1DDxBL2LkKLyAm}MK8LPPgg z%^IJsnG5Na{Sy(8oM#YiW<2*UxU$^i7^#|X=y+|i%9?{5il?Y2yQiCp{~_XmIqoZm z|Knkd3M3qqEvWL@{}2ItBA?eb97h^iRl@6bAr+{4E+S| zxWc}$7knE;n`LuAiZhdrWY~dN@22ebmxT`Y)u=8uewbD*fR|F1FRKt^X)MCMkO3MC^l+4~@?duOx|u4Exj2dV5I zQE}9xiQIia5Q(6aej~LrgTtGM*)qT)CSQKdz z(VtaH8exDVRvCmts%ky}m5q>_*S7*5+g}ElG&i74f3X6VNc#`yzYDf#t#J!3Jj&(| zo!IH_2^K*+;v0b*{;N=$8gZ2!aj+oA*i{rJP4C`3JTr#u*&@8tZr@0 zF@Zm9>DJZQbFSYBCYuJV?wL>{2?VX~l{|!A5@rzdZkqr)Jlr~c0e8miMA6~$ia7!x zbF1As-EVKfLa;vyoiS09!GZ2(R8lXy!0M?f-`8D31QljvvtX*HFz--Hv1n+*n3KuF z)%8eDgjq`>8c9Hj?LZ94uca}V`p5UZ$(Q=!6wPgY9UqAF{1wo>P#;`uCk_F;nQ6vP zR}WWdzp39s>BJWxNxoxjqP_fhGf2nV-99(d!gRZRpwDIg~=9pITz6&fhXgIGe5fOvmSObV_v5nb9c(VHY6ok zdH_}ym!-GPWH~I*DG`TLaDb<)z~gtgW(|czxeQ&Ea0;EWF+1MqAPLo~HypYUmVncT zK&bN&aSNc^hbxjw$ub}vN=|?X)GKo89aqn;7wim~uoBZoT;YmfiP4hKrZ~OFDX9G0 z1Q*}p;Fx5QR)fBCfK&FsAKpr|%n<`|yYV#YOGfzjj#(F zM2lQ4)B?5(OE9!p_ycY~U6d>E;E-l|&Jg73iX3ob^qq8T_Y2|a=nS;q^l#$>&AnIN z5S$*PEdBRO(22m$ooyIfd@04Tu0&IW;ja_7oy^}toWmDKy| zcKq=8XE48~>)j`#=KA5Ks{k7c2cKu_yVHk5tNym07fS$38+W*!S&^1;Q*+1*k*=$K zG$3(#bWBIDQn04kEmtn^=gCwC*J3FRNLnXD=J7kOQd-=^++k;Ht#+&xnUjp$tRl1g zek{BnG;F!pAGr=N^fT{LWyrDJL!;Bl3CE?@H0G$#Z#DU>f4@%BELNvIS?~C)#U}1b zQBbCP%LL#Coc={X;HdM72#}_W5egIHYXX$?3B!+&(O*YYi;ihfiC$-GCc-Dnzwe;I z!65Ei$jv|h0w>B2{N3G&y;}K7#xkufuVI?4ERObB$UjD+N8BDsH1LhKe*rNqv*}>4<)V) z1`#pJPCpnFs{HzWtt1k(S?TMKw3(t`UV^0QLxlc0q!#l)_f!A$s%=DhQc^1T19@I9t-Wu$wN z<@Z)R3SSX!ehZvHZvNIu%RLF zq+{FQW+MRBJ`YRXsV3^TDB$ig7t8;%P{I|_?+vA3zLLmQu5z>iRRr3#@Fs+1JseQ7 z>wl+5%Q3t}e>Rjg*N&})r=b%ql0wU{-+1YX4g4DwlA~X=z?iPa%AS@Sw34H1TF%(SIZLvHcm17fKoaucR z!&8)oNcq$QUES#bt_x#!eRmLzwEqDJCopamD*rKY6 zuaOm>v3ilTo(YWo7;4uRw36?8xKMl0pkP+_mp3T~JfFQ-w~Zg!bbAQ%1eK4~OLvt| zyk^_wSC%xuR7lG$s`a z060GAIMh|;j9LVP{>_MSJg`b@1y2`RF7o-npC^wxCDDBxa5kFcM1RkZ<%yP-rAznG zSiT-^HB68d!^TU)*9ZCxvtygsmzx2glSD(2$A5Z-u3md@e%8GurW~RXj5Url`b)kz z2hV=l=PbM$9;%4AS|(bFa08VTL=(3Go25^efr43Hmz@Nz2AoT#mzo^T7W=7(5f$#tA zT>df;`Rg+wJJT_M&p5mK?ehGN958x2Lk(|=^#~vRjzsw{rT#mTWbJz%<9l9gQg-bo zKJ(iZ-~62n`yDAg`?!ce_8-9i+pW^{?G{-F40jZoe4n(?!ylh<=NkjI_02>6&zSu- zfWHkl4SN4GY`;C<)nQV7lRzhBw{GIIzA1J8!4bb*qyI&7{|67etO!;74=(Xt#=(E= zN{?QA#*=Skz<+G4|BU~lQ~xs*jJ}x@O*I6Q|H0|LNy3w|t2ZkDRUYvl9Om0a{a-lw zH@wL2+b#1AAGar4z^Lh}tnT)jrg8iC_GR#7=v=6so08{2@1VpcE-cK&A;BpjF3ilq z#LdDY!p+3Q!YskX$to<$&dMY}#P|OjqW^z?urhO}D8EwD0LYiUervel58vF;cg{Uh zE6LcGD6Xq=9kcExZ@Q!MTUylrW@C z$&;^=9AFaQ8_SR|P}Q}bFxYAT`O(J$xVHcDIP{u2&b-UazVn!JI`c5t4Ta2J@o2$} zanIJg&nv)^0py~O^*G^r9cDkrX5XhmL=4=OJO2eq7BcqN1oDF2{Xs_Lx*b&NqZm`6 z!l>D4Aoz~Y1xprgbr)|;AIgmorDsy_lhI-@7=>yZg)KEtDEN~)s6GS2zLzw8?&_k1 z)VL#xm!1c?maE(`*4`#b3z6wVtcoU9tJ86q)HaF(fL;~*ieV!gsIZ!2gQ1?XW>n=h z9jHK)udl^u%MMo4TFbYCjw(0)qi0b8_Ge21?Zh~odvWK++zE1Y|2C3hS@7mL{uu84Z3CUY@ zb<3^~$n=vgdvlV(bnBgNW||_HE@`D?(^Z zPpb1`iuK;@Px0B8*6)RzpQkk~XTUqX$=nuaEan+MU#6{iK+dIFZ$k1jgl`PJg;XQ#LZqxp^7hTO z-XjGU6Js(^a{0u+~L9qQ4V!oP+UPk7F3???7)vyj$6+Y3)8 zWwY5j-DH|Gf~-=3#cmI@rmnqq0)do(;we}{> zJ=SCAzYq;Uug7=nOx_6a+el8(RNZM%oxYNOV;PW-iv?i=g0C$KkhNlag!S12v4l>1 zFRA-|3d6J|{8m#-yae34ElbBOK8p#-bKJuh;=@j=*$tk1E!~3&|FTN>VN9k0r*Uw3 z&=KUN)blP$wQ2zq;B8unKWp(!P#ba}14=MzTdeP{_Ch`RC~h$*{UB zt#DXoU~I_$u$x$iBAx^@z!Y}@3WPcDrI_Ai^)EsnW+;2*OytM-5a~1E+`(Y>(OmlrgO;x? znIPMZFp9}LW^;Q9QgAHwQ?U#gFh7P-Ct;?z#R{lT~vT2}}}7vISp|X<%FMtJBf>y+1>x zEZ5DD{GSbOnOu5Ci33p5kd3s3wnbI9d7v|EE)SyKWJ63Jm$Ur8 zDI5vsf!3Mf%vI4g=^h z>rnDDz8Y$?Mp7X~TZQ~BOt#$b73g?cH%m7toLioj6_o(KSA>shyHW_s-*`VZr^-t` zD^>I3eqrvLciAA8k+a~Jt#g*Tye^7=nJM-QEnP*j9mz7EpJ*1*Hoqu5nL;Ps67!^< za@Ai5unKu^kwKW8nQUkn9_i<{qX&~Hf=w6fSPFuZ9O>V6eakg*N;?2MgQ@2Oed`O< zg=|!U0=zQJfJE=~Ys@VBaeeQf1{t?r_;pbfn~!bYSM5*x3k2gfkD7Yg9a)ml#6wW z>EIiWixf+1i+%~&aQ0%EY&;=%m1;AYV)lF)Kr&viBVVEdW z3#c}{m!(ZvCc4j4m9n6@HDjfu0?>LN=af3@Zsb9b=E0h`DkyAzmn|`t7QD|@$RPVT zAG8vi;{@c*mzti5W;w>cJj-Ws$R3@^W}8<3V>3v%vGR=SFnpJtB0b>)7EM(v=m?HaI+0|NjhS zYS}V}{~L6Lzf?u70~d2+$v>88&z`l?V=YgO;zx3cPXF#)NAU9{gJ4lY+atVL< xVfMd!Vg(`OPG?3l(XH;kA5v~Td?Iao3u~uH1<(_~b8@qDaKVz3iz`aN{y(p_2&w=8 diff --git a/doc/src/week1/week1.do.txt b/doc/src/week1/week1.do.txt index 1169b4c..db355f5 100644 --- a/doc/src/week1/week1.do.txt +++ b/doc/src/week1/week1.do.txt @@ -18,15 +18,15 @@ DATE: January 23, 2025 ===== Practicalities ===== o Lectures Thursdays 1215pm-2pm, room FØ434, Department of Physics -o Lab and exercise sessions Thursdays 215pm-4pm, , room FØ434, Department of Physics +o Lab and exercise sessions Thursdays 215pm-4pm, room FØ434, Department of Physics o We plan to work on two projects which will define the content of the course, the format can be agreed upon by the participants -o No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively one long project. +o No exam, only two projects. Each projects counts 1/2 of the final grade. Aleternatively, one long project which counts 100% of the final grade o All info at the GitHub address URL:"https://github.com/CompPhysics/AdvancedMachineLearning" !split ===== Deep learning methods covered, tentative ===== -o _Deep learning, classics_ +o _Deep learning_ o Feed forward neural networks and its mathematics (NNs) o Convolutional neural networks (CNNs) o Recurrent neural networks (RNNs) @@ -40,7 +40,7 @@ o _Deep learning, generative methods_ o Variational autoencoders (VAEe) o Generative Adversarial Networks (GANs) o Autoregressive methods (tentative) -o _Physical Sciences (often just called Physics informed) informed machine learning_ +o _Physical Sciences (often just called Physics informed neural networks, PINNs) informed machine learning_ @@ -53,22 +53,11 @@ main idea behind KMR is to flexibly model the relationship between a large number of variables and a particular outcome (dependent variable). -We have not made plans for Reinforcement learning, but this can be another option. +We have not made plans for Reinforcement learning. !split -===== Good books with hands-on material and codes ===== -!bblock -* "Sebastian Rashcka et al, Machine learning with Sickit-Learn and PyTorch":"https://sebastianraschka.com/blog/2022/ml-pytorch-book.html" -* "David Foster, Generative Deep Learning with TensorFlow":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html" -* "Bali and Gavras, Generative AI with Python and TensorFlow 2":"https://github.com/PacktPublishing/Hands-On-Generative-AI-with-Python-and-TensorFlow-2" -!eblock - -All three books have GitHub addresses from where one can download all codes. We will borrow most of the material from these three texts as well as -from Goodfellow, Bengio and Courville's text "Deep Learning":"https://www.deeplearningbook.org/" - -!split -===== Project paths ===== +===== Project paths, overarching view ===== The course can also be used as a self-study course and besides the lectures, many of you may wish to independently work on your own @@ -86,6 +75,86 @@ o The own data path. Some of you may have data you wish to analyze with differen o The Bayesian ML path is not covered by the present lecture material and leads normally to independent self-study work. +!split +===== Possible paths for the projects ===== + +The differential equation path: Here we propose a set of differential +equations (ordinary and/or partial) to be solved first using neural +networks (using either your own code or TensorFlow/Pytorch or similar +libraries). Thereafter we can extend the set of methods for +solving these equations to recurrent neural networks and autoencoders +(AE) and/or Generalized Adversarial Networks (GANs). All these +approaches can be expanded into one large project. This project can +also be extended into including "Physics informed machine +learning":"https://github.com/maziarraissi/PINNs". Here we can discuss +neural networks that are trained to solve supervised learning tasks +while respecting any given law of physics described by general +nonlinear partial differential equations. + +For those interested in mathematical aspects of deep learning, this could also be included. + +!split +===== The generative models ===== + +This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent +the lectures. Topics for data sets will be discussed. + +!split +===== Paths for projects, writing own codes ===== + +The computational path: Here we propose a path where you develop your +own code for a convolutional or eventually recurrent neural network +and apply this to data selects of your own selection. The code should +be object oriented and flexible allowing for eventual extensions by +including different Loss/Cost functions and other +functionalities. Feel free to select data sets from those suggested +below here. This code can also be extended upon by adding for example +autoencoders. You can compare your own codes with implementations +using TensorFlow(Keras)/PyTorch or other libraries. + +!split +===== The application path/own data ===== + +The application path: Here you can use the most relevant method(s) +(say convolutional neural networks for images) and apply this(these) +to data sets relevant for your own research. + +!split +===== Gaussian processes and Bayesian analysis ===== + +The Gaussian processes/Bayesian statistics path: "Kernel regression +(Gaussian processes) and Bayesian +statistics":"https://jenfb.github.io/bkmr/overview.html" are popular +tools in the machine learning literature. The main idea behind these +approaches is to flexibly model the relationship between a large +number of variables and a particular outcome (dependent +variable). This can form a second part of a project where for example +standard Kernel regression methods are used on a specific data +set. Alternatively, participants can opt to work on a large project +relevant for their own research using gaussian processes and/or +Bayesian machine Learning. + +!split +===== HPC path ===== + +Another alternative is to study high-performance computing aspects in +designing ML codes. This can also be linked with an exploration of +mathematical aspects of deep learning methods. + + + + +!split +===== Good books with hands-on material and codes ===== +!bblock +* "Sebastian Rashcka et al, Machine learning with Sickit-Learn and PyTorch":"https://sebastianraschka.com/blog/2022/ml-pytorch-book.html" +* "David Foster, Generative Deep Learning with TensorFlow":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html" +* "Bali and Gavras, Generative AI with Python and TensorFlow 2":"https://github.com/PacktPublishing/Hands-On-Generative-AI-with-Python-and-TensorFlow-2" +!eblock + +All three books have GitHub addresses from where one can download all codes. We will borrow most of the material from these three texts as well as +from Goodfellow, Bengio and Courville's text "Deep Learning":"https://www.deeplearningbook.org/" + !split ===== Types of machine learning ===== @@ -145,7 +214,7 @@ novel, realistic images of horses that did not exist in the original dataset. !split -===== Example of generative modeling, "taken from Generative Deeep Learning by David Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html" ===== +===== Example of generative modeling, "taken from Generative Deep Learning by David Foster":"https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html" ===== FIGURE: [figures/generativelearning.png, width=900 frac=1.0] @@ -211,77 +280,10 @@ data (for example an image), rather than trying to predict a label for say a gi FIGURE: [figures/generativemodels.png, width=900 frac=1.0] -!split -===== Possible paths for the projects ===== - -The differential equation path: Here we propose a set of differential -equations (ordinary and/or partial) to be solved first using neural -networks (using either your own code or TensorFlow/Pytorch or similar -libraries). Thereafter we can extend the set of methods for -solving these equations to recurrent neural networks and autoencoders -(AE) and/or Generalized Adversarial Networks (GANs). All these -approaches can be expanded into one large project. This project can -also be extended into including "Physics informed machine -learning":"https://github.com/maziarraissi/PINNs". Here we can discuss -neural networks that are trained to solve supervised learning tasks -while respecting any given law of physics described by general -nonlinear partial differential equations. - -For those interested in mathematical aspects of deep learning, this could also be included. - -!split -===== The generative models ===== - -This path brings us from discriminative models (like the standard application of NNs, CNNs etc) to generative models. Two projects that follow to a large extent -the lectures. Topics for data sets will be discussed during the lab sessions. - -!split -===== Paths for projects, writing own codes ===== - -The computational path: Here we propose a path where you develop your -own code for a convolutional or eventually recurrent neural network -and apply this to data selects of your own selection. The code should -be object oriented and flexible allowing for eventual extensions by -including different Loss/Cost functions and other -functionalities. Feel free to select data sets from those suggested -below here. This code can also be extended upon by adding for example -autoencoders. You can compare your own codes with implementations -using TensorFlow(Keras)/PyTorch or other libraries. - -!split -===== The application path ===== - -The application path: Here you can use the most relevant method(s) -(say convolutional neural networks for images) and apply this(these) -to data sets relevant for your own research. - -!split -===== Gaussian processes and Bayesian analysis ===== - -The Gaussian processes/Bayesian statistics path: "Kernel regression -(Gaussian processes) and Bayesian -statistics":"https://jenfb.github.io/bkmr/overview.html" are popular -tools in the machine learning literature. The main idea behind these -approaches is to flexibly model the relationship between a large -number of variables and a particular outcome (dependent -variable). This can form a second part of a project where for example -standard Kernel regression methods are used on a specific data -set. Alternatively, participants can opt to work on a large project -relevant for their own research using gaussian processes and/or -Bayesian machine Learning. - -!split -===== HPC path ===== - -Another alternative is to study high-performance computing aspects in -designing ML codes. This can also be linked with an exploration of -mathematical aspects of deep learning methods. - - !split -===== What are the basic Machine Learning ingredients? ===== +===== Reminder on the basic Machine Learning ingredients ===== !bblock Almost every problem in ML and data science starts with the same ingredients: * The dataset $\bm{x}$ (could be some observable quantity of the system we are studying)