ADCME: Your Gateway to Inverse Modeling with Physics Based Machine Learning

ADCME is an open-source Julia package for inverse modeling in scientific computing using automatic differentiation. The backend of ADCME is the high performance deep learning framework, TensorFlow, which provides parallel computing and automatic differentiation features based on computational graph, but ADCME augments TensorFlow by functionalities–-like sparse linear algebra–-essential for scientific computing. ADCME leverages the Julia environment for maximum efficiency of computing. Additionally, the syntax of ADCME is designed from the beginning to be compatible with the Julia syntax, which is friendly for scientific computing.


The tutorial does not assume readers with experience in deep learning. However, basic knowledge of scientific computing in Julia is required.

Tutorial Series

What is ADCME? Computational Graph, Automatic Differentiation & TensorFlow

ADCME Basics: Tensor, Type, Operator, Session & Kernel

PDE Constrained Optimization

Sparse Linear Algebra in ADCME

Numerical Scheme in ADCME: Finite Difference Example

Numerical Scheme in ADCME: Finite Element Example

Inverse Modeling in ADCME

Inverse Modeling Recipe

Combining NN with Numerical Schemes

Advanced: Automatic Differentiation for Implicit Operations

Advanced: Custom Operators

Advanced: Debugging and Profiling


  • exerciseIf you want to discuss or check your exercise solutions, you are welcome to send an email to kailaix@hotmail.com.