• Stars
    star
    810
  • Rank 56,306 (Top 2 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created over 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

All the handwritten notes ๐Ÿ“ and source code files ๐Ÿ–ฅ๏ธ used in my YouTube Videos on Machine Learning & Simulation (https://www.youtube.com/channel/UCh0P7KwJhuQ4vrzc3IRuw4Q)

# Mathematics for Machine Learning and Simulation

Here you can find all the material of my YouTube Channel.

Overview

Most of my videos are in English but some content is also offered in German. You can find the hand-written notes in the folders, respectively.

These are the topics I cover at the moment:

  • English:
    • ๐Ÿง‘โ€๐Ÿซ Math Basics (Playlist): Things that are usually not taught in (engineering) math courses but that are relevant for Machine Learning & Simulation like (inequality) constrained optimization, some tricks in linear algebra, functionals, functional derivatives etc.
    • โš“ Essential probability density/mass functions (Playlist): Standard discrete probability mass functions like Bernoulli & Categorical as well as continuous probability density functions like univariate and multivariate Gaussian/Normal together with their Maximum Likelihood Estimates, priors, posteriors, moments etc.
    • ๐ŸŽฒ Probabilistic Machine Learning (Playlist): All the way from directed graphical models, the EM algorithm and Variational Inference to Deep Generative Models like Variational Auto-Encoders, Generative Adversarial Networks and Latent Dirichlet Allocation
    • ๐Ÿ–ฅ๏ธ Miscellaneous Computer Science Topics (Playlist): Handy things that are relevant for some parts of Machine Learning and Simulation, like calling libraries in C from different languages like Julia or Python.
    • ๐Ÿ’พ Sparse Matrices (Playlist): Different ways to implement sparse matrices that become relevant when dealing with (large) sparse linear systems arising in simulation problems like FEM & CFD. All formats include an implementation in the C programming language.
    • ๐Ÿฅ” Continuum Mechanics (Playlist): The Fundamentals of Structural & Fluid Mechanics relevant for deriving numeric schemes in CFD & FEM. From Eulerian & Lagrangian description of motion to stretch & strain measures, to stress measures, time derivatives and constitutive modelling.
    • ๐Ÿ“‰ Automatic Differentiation, Adjoints & Sensitivities (Playlist): Algorithms and Mathematical Tricks to differentiate through various computer codes. These can include explicit computation graphs (like in Neural Networks), implicitly given relations like Linear or nonlinear Systems or even Ordinary and Partial Differential equations. The applications are vast, ranging from differentiable physics to classical Deep Learning to Optimal Control. The derivations are accompanied by implementations in Python & Julia.
    • ๐Ÿ› ๏ธ Fenics Tutorial (Playlist): A collection of videos to showcase the usage of the Fenics Finite Element Library to solve various Partial Differential Equations. Videos can be practical (including coding in Python) as well as theoretical on the Finite Element Method.
    • ๐ŸŒŠ Simulations simply implemented in Python or Julia (Playlist): My favorite series! If you ever wanted to write a Fluid Simulation from scratch, take a look at the playlist. Includes all kinds of simulations like CFD, Structural Mechanics, Electrodynamics etc.
    • ๐Ÿ‘ถ Automatic Differentiation Primitive Rules (Playlist): Modern autodiff engines (like JAX, TensorFlow, PyTorch, Julia Zygote etc.) are based on the transformation of a computational graph by the transformation of its primitive operations. This playlist covers the rules (both for forward-mode and reverse-mode automatic differentiation) for the most important operations.
    • ๐Ÿ Scientific Python Worksop (Playlist): Recording for a three-day introduction to Python and the most essential libraries for scientific computing and machine learning. Find the corresponding repo here
  • Deutsch:
    • ๐Ÿ“ Tensor Analysis (Playlist): Grundlegende und erweiterte Techniken zur Mehrdimensionalen Analysis mit einen Fokus auf Visualierungen.
    • โ†—๏ธ Gewรถhnliche Differentialgleichungen (Playlist): Analytische und numerische Behandlung gewรถhnlicher Differentialgleichungen, beginnend bei Trennung der Variablen und Variation der Konstanten bis hin zu Runge-Kutta Verfahren, Stabilitรคtsanalyse und Konvergenzuntersuchung.

These are topics I am going to cover in the long run:

  • English:
    • Basics:
      • Tensor Calculus
      • Automatic Differentiation
      • More on Probability mass/density functions
    • Modelling & Simulation:
      • Ordinary Differential Equations (ODEs)
      • Partial Differential Equations (PDEs)
      • Linear Finite Element Method
      • (Numerical) Control Theory
      • Computational Fluid Dynamics
      • Nonlinear Finite Element Method
      • Visualization Techniques
      • Constitutive Modelling of Solids
      • Constitutive Modelling of Fluids
      • Computational Viscoelasticity
      • Computational Plasticity
      • Uncertainty Quantification
    • Numerical Analysis:
      • Floating Point Error Analysis
      • Solving Linear Systems
      • Interpolation & Quadrature
      • Eigenvalue Computation
      • Solving Nonlinear Systems
      • Optimization Techniques
    • High-Performance Computing:
      • Essential topics of programming in parallel
      • A tour of the BLAS library
      • A tour of the lapack library
      • Parallel Numerics
      • PThread
      • OpenMP
      • MPI
      • CUDA
    • Machine Learning:
      • (Classical) Machine Learning
      • Dimensionality Reduction
      • Metrics in Machine Learning
      • Deep Learning
      • Markov-Chain Monte-Carlo Techniques

On top of that I have some ideas for projects. :)

Contribution

Contribution to this repo are always welcome. If you extended one of my source-codes for a more advanced example or if you think something is wrong or could have been explained better, feel free to open a Pull-Request to this repo. And of course if you can improve the code's performance (while maintaining readability), also feel free to open a pull request.

Donation

If you like the content of this repo, please consider becoming a Patreon

More Repositories

1

scientific-python-course

Slides + Source Code + Data for an introductory course to NumPy, Matplotlib, SciPy, Scikit-Learn & TensorFlow Keras
Jupyter Notebook
20
star
2

Tsunamis.jl

๐ŸŒŠ ๐ŸŒŠ ๐ŸŒŠ Parallel Shallow Water Equations Solver by Finite Volume Method and HLLE Riemann Solver in Julia.
Julia
17
star
3

StableFluids.jl

2D Stable Fluids & 3D Stable Fluids using the Fast Fourier Transformation implemented efficiently in Julia.
Julia
12
star
4

lid-driven-cavity-python

Solving the Navier-Stokes Equations in Python ๐Ÿ simply using NumPy.
Python
11
star
5

pdequinox

Neural Emulator Architectures in JAX.
Python
8
star
6

expmath

Online visualization tool for basic engineering math concepts using flask and bokeh. Available online at http://expmath.math.nat.tu-bs.de/ (in German)
HTML
7
star
7

4k-turbulence-wallpapers

A collection of wallpapers
7
star
8

apebench

[Neurips 2024] A benchmark suite for autoregressive neural emulation of PDEs. (>46 PDEs in 1D, 2D, 3D; Differentiable Physics; Unrolled Training; Rollout Metrics)
Python
7
star
9

pinns-in-jax

Simple implementation of Physics-Informed Neural Networks for the solution of Partial Differential Equations in JAX (using Equinox and Optax)
Jupyter Notebook
6
star
10

exponax

Efficient Differentiable n-d PDE solvers in JAX.
Jupyter Notebook
6
star
11

taylor-green-vortex-julia

A simple pseudo-spectral solver for the Direct Numerical Simulation (DNS) of the 3D Taylor-Green Vortex in the Julia programming language
Julia
6
star
12

Lattice-Boltzmann-Method-JAX

Simple D2Q9 Lattice-Boltzmann-Method solver implemented in Python with JAX. Simulates the fluid motion of the van-Karman vortex street behind a cylinder.
Python
6
star
13

numerical_programming_cheatsheet

TeX
4
star
14

DeepONet-in-JAX

Simple implementation of Deep Operator Networks (DeepONets) in the JAX deep learning framework together with Equinox.
Jupyter Notebook
4
star
15

UNet-in-JAX

Simple 1d UNet in JAX & Equinox to solve the Poisson equation.
Jupyter Notebook
4
star
16

FNO-in-JAX

Simple implementation of Fourier Neural Operators (FNOs) in the JAX deep learning framework together with Equinox.
Jupyter Notebook
4
star
17

autodiff-table

An overview of major automatic differentiation primitive rules
HTML
2
star
18

pinns-in-julia

Simple implementation of Physics-Informed Neural Networks for the solution of Partial Differential Equations in Julia
Jupyter Notebook
2
star
19

conv-autodiff-table-frameworks

A collection of pullback rules, using function calls from various deep learning libraries. This also explains the handling of batch and channel axes.
HTML
1
star
20

expmath_2

New Version of Expmath, partiall using the old Expmath but inside new streamlit environment
Python
1
star