DeepEIT: Recovery of the conductivity in 3-dimensional medium using deep neural network approximations
DeepEIT is an open-source Python-based code to solve an inverse problem for an elliptic equation and determine the conductivity using deep neural networks. Specifically, the proposed algorithm projects this problem into a finite dimensional space by approximating both the unknown conductivity and the corresponding solution using two independent neural networks, which are jointly trained by minimizing a novel loss function.
Consider the following elliptic equation with Neumann boundary condition
with . In order to solve the inverse problem, we first construct two deep neural networks, one appximates the solution and the other approximates the conductivity. Then we propose a novel loss function to replace the Neumann boundary control with interior control by introducing a predifined harmonic function G.
Finally we jointly train the nerual networks and reconstruct both the solution and the conductivity.
We perform the proposed algorithm on 3-dimensional medium, and the results are shown below.
- Hyper-parameters and reconstruction errors on different noise levels
The code has been tested on
- macOS Big Sur & Python 3.8.8 & PyTorch 1.10.0
- Ubuntu 18.04.5 & 3.8.11 & PyTorch 1.9.0+cu111
usage:
python main.py {train, test, plot} [optional arguments]
positional arguments:
{train,test,plot} train | test | plot
train training mode
test testing mode
plot plotting mode
optional arguments:
-h, --help show this help message and exit
--device cpu | cuda
--seed random seed
--num_channels hidden layer width of network
--num_blocks number of residual blocks of network
--acti activation function of the network
--dim dimension of space
--xmin lower bound of Omega
--xmax upper bound of Omega
--csv_path path of csv path to store training parameteres
--save_path saved path of the results
This work is supported by NSFC (No.11971104, 11531005) and National Key R&D Program of China (2020YFA0713800).