Giter Site home page Giter Site logo

kailaix / adcme.jl Goto Github PK

View Code? Open in Web Editor NEW
285.0 25.0 57.0 147.15 MB

Automatic Differentiation Library for Computational and Mathematical Engineering

Home Page: https://kailaix.github.io/ADCME.jl/latest/

License: MIT License

Julia 99.77% Dockerfile 0.23%
automatic-differentiation machine-learning tensorflow scientific-computing optimization neural-networks numerical-pdes

adcme.jl's Introduction

ADCME

Coverage Status

The ADCME library (Automatic Differentiation Library for Computational and Mathematical Engineering) aims at general and scalable inverse modeling in scientific computing with gradient-based optimization techniques. It is built on the deep learning framework, graph-mode TensorFlow, which provides the automatic differentiation and parallel computing backend. The dataflow model adopted by the framework makes it suitable for high performance computing and inverse modeling in scientific computing. The design principles and methodologies are summarized in the slides.

Check out more about slides and videos on ADCME!

Install ADCME and Get Started (Windows, Mac, and Linux) Scientific Machine Learning for Inverse Modeling Solving Inverse Modeling Problems with ADCME ...more on ADCME Youtube Channel!
Alt text Alt text Alt text

Several features of the library are

  • MATLAB-style Syntax. Write A*B for matrix production instead of tf.matmul(A,B).
  • Custom Operators. Implement operators in C/C++ for performance critical parts; incorporate legacy code or specially designed C/C++ code in ADCME; automatic differentiation through implicit schemes and iterative solvers.
  • Numerical Scheme. Easy to implement numerical schemes for solving PDEs.
  • Physics Constrained Learning. Embed neural network into PDEs and solve with any numerical schemes, including implicit and iterative schemes.
  • Static Graphs. Compilation time computational graph optimization; automatic parallelism for your simulation codes.
  • Parallel Computing. Concurrent execution and model/data parallel distributed optimization.
  • Custom Optimizers. Large scale constrained optimization? Use CustomOptimizer to integrate your favorite optimizer. Try out prebuilt Ipopt and NLopt optimizers.
  • Sparse Linear Algebra. Sparse linear algebra library tailored for scientific computing.
  • Inverse Modeling. Many inverse modeling algorithms have been developed and implemented in ADCME, with wide applications in solid mechanics, fluid dynamics, geophysics, and stochastic processes.
  • Finite Element Method. Get AdFem.jl today for finite element simulation and inverse modeling!

Start building your forward and inverse modeling using ADCME today!

Documentation Tutorial Applications

Graph-mode TensorFlow for High Performance Scientific Computing

Static computational graph (graph-mode AD) enables compilation time optimization. Below is a benchmark of common AD software from here. In inverse modeling, we usually have a scalar-valued objective function, so the left panel is most relevant for ADCME.

Installation

  1. Install Julia.

🎉 Support Matrix

Julia≧1.3 GPU Custom Operator
Linux
MacOS
Windows
  1. Install ADCME
using Pkg
Pkg.add("ADCME")

❗ FOR WINDOWS USERS: See the instruction or the video for installation details.

❗ FOR MACOS USERS: See this troubleshooting list for potential installation and compilation problems on Mac.

  1. (Optional) Test ADCME.jl
using Pkg
Pkg.test("ADCME")

See Troubleshooting if you encounter any compilation problems.

  1. (Optional) To enable GPU support, make sure nvcc is available from your environment (e.g., type nvcc in your shell and you should get the location of the executable binary file), and then type
ENV["GPU"] = 1
Pkg.build("ADCME")

You can check the status with using ADCME; gpu_info().

  1. (Optional) Check the health of your installed ADCME and install missing dependencies or fixing incorrect paths.
using ADCME 
doctor()

For manual installation without access to the internet, see here.

Install via Docker

If you have Docker installed on your system, you can try the no-hassle way to install ADCME (you don't even have to install Julia!):

docker run -ti kailaix/adcme

For GPU-enabled ADCME, use

docker run -ti --gpus all kailaix/adcme:gpu

See this guide for details. The docker images are hosted here.

Tutorial

Here we present three inverse problem examples. The first one is a parameter estimation problem, the second one is a function inverse problem where the unknown function does not depend on the state variables, and the third one is also a function inverse problem, but the unknown function depends on the state variables.

Parameter Inverse Problem

Consider solving the following problem

where

Assume that we have observed u(0.5)=1, we want to estimate b. In this case, he true value should be b=1.

using LinearAlgebra
using ADCME

n = 101 # number of grid nodes in [0,1]
h = 1/(n-1)
x = LinRange(0,1,n)[2:end-1]

b = Variable(10.0) # we use Variable keyword to mark the unknowns
A = diagm(0=>2/h^2*ones(n-2), -1=>-1/h^2*ones(n-3), 1=>-1/h^2*ones(n-3)) 
B = b*A + I  # I stands for the identity matrix
f = @. 4*(2 + x - x^2) 
u = B\f # solve the equation using built-in linear solver
ue = u[div(n+1,2)] # extract values at x=0.5

loss = (ue-1.0)^2 

# Optimization
sess = Session(); init(sess) 
BFGS!(sess, loss)

println("Estimated b = ", run(sess, b))

Expected output

Estimated b = 0.9995582304494237

The gradients can be obtained very easily. For example, if we want the gradients of loss with respect to b, the following code will create a Tensor for the gradient

julia> gradients(loss, b)
PyObject <tf.Tensor 'gradients_1/Mul_grad/Reshape:0' shape=() dtype=float64>

Function Inverse Problem: Full Field Data

Consider a nonlinear PDE,

where

Here f(x) can be computed from an analytical solution

In this problem, we are given the full field data of u(x) (the discrete value of u(x) is given on a very fine grid) and want to estimate the nonparametric function b(u). We approximate b(u) using a neural network and use the residual minimization method to find the optimal weights and biases of the neural network. The minimization problem is given by

using LinearAlgebra
using ADCME
using PyPlot

n = 101 
h = 1/(n-1)
x = LinRange(0,1,n)|>collect

u = sin.(π*x)
f = @. (1+u^2)/(1+2u^2) * π^2 * u + u 
# `fc` is short for fully connected neural network. 
# Here we create a neural network with 2 hidden layers, and 20 neuron per layer. 
# The default activation function is tanh.
b = squeeze(fc(u[2:end-1], [20,20,1])) 

residual = -b.*(u[3:end]+u[1:end-2]-2u[2:end-1])/h^2 + u[2:end-1] - f[2:end-1]
loss = sum(residual^2)

sess = Session(); init(sess)
BFGS!(sess, loss)

plot(x, (@. (1+x^2)/(1+2*x^2)), label="Reference")
plot(u[2:end-1], run(sess, b), "o", markersize=5., label="Estimated")
legend(); xlabel("\$u\$"); ylabel("\$b(u)\$"); grid("on")

Here we show the estimated coefficient function and the reference one:

Function Inverse Problem: Sparse Data

Now we consider the same problem as above, but only consider we have access to sparse observations. We assume that on the grid only the values of u(x) on every other 5th grid point are observable. We use the physics constrained learning technique and train a neural network surrogate for b(u) by minimizing

Here uᶿ is the solution to the PDE with

We add 1 to the neural network to ensure the initial guess does not result in a singular Jacobian matrix in the Newton Raphson solver.

using LinearAlgebra
using ADCME
using PyPlot

n = 101 
h = 1/(n-1)
x = LinRange(0,1,n)|>collect

u = sin.(π*x)
f = @. (1+u^2)/(1+2u^2) * π^2 * u + u 

# we use a Newton Raphson solver to solve the nonlinear PDE problem 
function residual_and_jac(θ, x)
    nn = squeeze(fc(reshape(x,:,1), [20,20,1], θ)) + 1.0
    u_full = vector(2:n-1, x, n)
    res = -nn.*(u_full[3:end]+u_full[1:end-2]-2u_full[2:end-1])/h^2 + u_full[2:end-1] - f[2:end-1]
    J = gradients(res, x)
    res, J
end
θ = Variable(fc_init([1,20,20,1]))
ADCME.options.newton_raphson.rtol = 1e-4 # relative tolerance
ADCME.options.newton_raphson.tol = 1e-4 # absolute tolerance
ADCME.options.newton_raphson.verbose = true # print details in newton_raphson
u_est = newton_raphson_with_grad(residual_and_jac, constant(zeros(n-2)),θ)
residual = u_est[1:5:end] - u[2:end-1][1:5:end]
loss = sum(residual^2)

b = squeeze(fc(reshape(x,:,1), [20,20,1], θ)) + 1.0
sess = Session(); init(sess)
BFGS!(sess, loss)

figure(figsize=(10,4))
subplot(121)
plot(x, (@. (1+x^2)/(1+2*x^2)), label="Reference")
plot(x, run(sess, b), "o", markersize=5., label="Estimated")
legend(); xlabel("\$u\$"); ylabel("\$b(u)\$"); grid("on")
subplot(122)
plot(x, (@. sin*x)), label="Reference")
plot(x[2:end-1], run(sess, u_est), "--", label="Estimated")
plot(x[2:end-1][1:5:end], run(sess, u_est)[1:5:end], "x", markersize=5., label="Data")
legend(); xlabel("\$x\$"); ylabel("\$u\$"); grid("on")

We show the reconstructed b(u) and the solution u computed from b(u). We see that even though the neural network model fits the data very well, b(u) is not the same as the true one. This problem is ubiquitous in inverse modeling, where the unknown may not be unique.

See Applications for more inverse modeling techniques and examples.

Under the Hood: Computational Graph

A static computational graph is automatic constructed for your implementation. The computational graph guides the runtime execution, saves intermediate results, and records data flows dependencies for automatic differentiation. Here we show the computational graph in the parameter inverse problem:

See a detailed tutorial, or a full documentation.

Featured Applications

Constitutive Modeling Seismic Inversion Coupled Two-Phase Flow and Time-lapse FWI Calibrating Jump Diffusion
law law law law

Here are some research papers using ADCME:

  1. Li, Dongzhuo, Kailai Xu, Jerry M. Harris, and Eric Darve. "Coupled Time‐Lapse Full‐Waveform Inversion for Subsurface Flow Problems Using Intrusive Automatic Differentiation." Water Resources Research 56, no. 8 (2020): e2019WR027032.

  2. Xu, Kailai, Alexandre M. Tartakovsky, Jeff Burghardt, and Eric Darve. "Inverse Modeling of Viscoelasticity Materials using Physics Constrained Learning." arXiv preprint arXiv:2005.04384 (2020).

  3. Zhu, Weiqiang, Kailai Xu, Eric Darve, and Gregory C. Beroza. "A General Approach to Seismic Inversion with Automatic Differentiation." arXiv preprint arXiv:2003.06027 (2020).

  4. Xu, K. and Darve, E., 2019. Adversarial Numerical Analysis for Inverse Problems. arXiv preprint arXiv:1910.06936.

  5. Xu, Kailai, Weiqiang Zhu, and Eric Darve. "Distributed Machine Learning for Computational Engineering using MPI." arXiv preprint arXiv:2011.01349 (2020).

  6. Xu, Kailai, and Eric Darve. "Physics constrained learning for data-driven inverse modeling from sparse observations." arXiv preprint arXiv:2002.10521 (2020).

  7. Xu, Kailai, Daniel Z. Huang, and Eric Darve. "Learning constitutive relations using symmetric positive definite neural networks." arXiv preprint arXiv:2004.00265 (2020).

  8. Xu, Kailai, and Eric Darve. "The neural network approach to inverse problems in differential equations." arXiv preprint arXiv:1901.07758 (2019).

  9. Huang, D.Z., Xu, K., Farhat, C. and Darve, E., 2019. Predictive modeling with learned constitutive laws from indirect observations. arXiv preprint arXiv:1905.12530.

Domain specific software based on ADCME

ADSeismic.jl: Inverse Problems in Earthquake Location/Source-Time Function, FWI, Rupture Process

FwiFlow.jl: Seismic Inversion, Two-phase Flow, Coupled seismic and flow equations

AdFem.jl: Inverse Modeling with the Finite Element Method

Citation

Please cite this paper if you use this library:

https://arxiv.org/abs/2011.11955

@misc{xu2020adcme,
title={ADCME: Learning Spatially-varying Physical Fields using Deep Neural Networks},
author={Kailai Xu and Eric Darve},
year={2020},
eprint={2011.11955},
archivePrefix={arXiv},
primaryClass={math.NA}
}

LICENSE

ADCME.jl is released under MIT License. See License for details.

adcme.jl's People

Contributors

ericdarve avatar juliatagbot avatar kailaix avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adcme.jl's Issues

GPU BFGS Algorithm

BFGS is very useful for the engineering optimization problem. It seems not trivial to have an elegant solution for implementing or wrapping a GPU-accelerated BFGS optimizer.

cannot install ADCME with GPU support

julia> ENV["GPU"] = 1
1

julia> Pkg.build("ADCME")
Building Conda \u2500\u2192 ~/.julia/packages/Conda/3rPhK/deps/build.log
Building PyCall \u2192 ~/.julia/packages/PyCall/zqDXB/deps/build.log
Building CMake \u2500\u2192 ~/.julia/packages/CMake/ULbyn/deps/build.log
Building HDF5 \u2500\u2500\u2192 ~/.julia/packages/HDF5/hPEcL/deps/build.log
Building FFTW \u2500\u2500\u2192 ~/.julia/packages/FFTW/DMUbN/deps/build.log
Building ADCME \u2500\u2192 ~/.julia/packages/ADCME/DBZ10/deps/build.log
\u250c Error: Error building ADCME:
\u2502 /usr/local/cuda/bin/nvcc
\u2502 Collecting package metadata (current_repodata.json): ...working... done
\u2502 Solving environment: ...working... done
\u2502
\u2502 # All requested packages already installed.
\u2502
\u2502 \u250c Warning: Pkg.installed() is deprecated
\u2502 \u2514 @ Pkg /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Pkg.jl:531
\u2502 \u250c Warning: Pkg.installed() is deprecated
\u2502 \u2514 @ Pkg /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Pkg.jl:531
\u2502 [ Info: Your Julia version is 1.4.2, current ADCME version is 0.5.9, ADCME dependencies installation path: /home/student/adhara/.julia/conda/3
\u2502 [ Info: --------------- (1/6) Install Tensorflow Dependencies ---------------
\u2502 [ Info: ADCME dependencies have already been installed
\u2502 [ Info: --------------- (2/6) Check Python Version ---------------
\u2502 \u250c Warning: Pkg.installed() is deprecated
\u2502 \u2514 @ Pkg /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Pkg.jl:531
\u2502 Building Conda \u2500\u2192 ~/.julia/packages/Conda/3rPhK/deps/build.log
\u2502 Building PyCall \u2192 ~/.julia/packages/PyCall/zqDXB/deps/build.log
\u2502 \u250c Info: PyCall Python version: /home/student/adhara/.julia/conda/3/bin/python
\u2502 \u2514 Conda Python version: /home/student/adhara/.julia/conda/3/bin/python
\u2502 [ Info: --------------- (3/6) Looking for TensorFlow Dynamic Libraries ---------------
\u2502 [ Info: --------------- (4/6) Preparing Custom Operator Environment ---------------
\u2502 [ Info: --------------- (5/6) Installing GPU Dependencies ---------------
\u2502 \u250c Warning: TensorFlow is compiled using CUDA 10.0, but you have CUDA 10.2. This might cause some problems.
\u2502 \u2514 @ Main ~/.julia/packages/ADCME/DBZ10/deps/build.jl:161
\u2502 ERROR: LoadError: UndefVarError: ROOTENV not defined
\u2502 Stacktrace:
\u2502 [1] top-level scope at /home/student/adhara/.julia/packages/ADCME/DBZ10/deps/build.jl:166
\u2502 [2] include(::String) at ./client.jl:439
\u2502 [3] top-level scope at none:5
\u2502 in expression starting at /home/student/adhara/.julia/packages/ADCME/DBZ10/deps/build.jl:143
\u2514 @ Pkg.Operations /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Operations.jl:899

Error: Error building `ADCME`:

┌ Error: Error building ADCME:
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Pkg.jl:554
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Pkg.jl:554
│ [ Info: Your Julia version is 1.5.3, current ADCME version is 0.5.13, ADCME dependencies installation path: C:\Users\Farzad.julia\adcme
│ [ Info: --------------- (1/6) Install Tensorflow Dependencies ---------------
│ [ Info: ADCME dependencies have already been installed
│ [ Info: --------------- (2/6) Check Python Version ---------------
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Pkg.jl:554
│ Building Conda ─→ C:\Users\Farzad\.julia\packages\Conda\x5ml4\deps\build.log
│ Building PyCall → C:\Users\Farzad\.julia\packages\PyCall\BcTLp\deps\build.log
│ ┌ Info: PyCall Python version: C:\Users\Farzad.julia\adcme\python.exe
│ └ Conda Python version: C:\Users\Farzad.julia\adcme\python.exe
│ [ Info: --------------- (3/6) Looking for TensorFlow Dynamic Libraries ---------------
│ ERROR: LoadError: PyError (PyImport_ImportModule

│ The Python package tensorflow could not be imported by pyimport. Usually this means
│ that you did not install tensorflow in the Python version being used by PyCall.

│ PyCall is currently configured to use the Python version at:

│ C:\Users\Farzad.julia\adcme\python.exe

│ and you should use whatever mechanism you usually use (apt-get, pip, conda,
│ etcetera) to install the Python package containing the tensorflow module.

│ One alternative is to re-configure PyCall to use a different Python
│ version on your system: set ENV["PYTHON"] to the path/name of the python
│ executable you want to use, run Pkg.build("PyCall"), and re-launch Julia.

│ Another alternative is to configure PyCall to use a Julia-specific Python
│ distribution via the Conda.jl package (which installs a private Anaconda
│ Python distribution), which has the advantage that packages can be installed
│ and kept up-to-date via Julia. As explained in the PyCall documentation,
│ set ENV["PYTHON"]="", run Pkg.build("PyCall"), and re-launch Julia. Then,
│ To install the tensorflow module, you can use pyimport_conda("tensorflow", PKG),
│ where PKG is the Anaconda package the contains the module tensorflow,
│ or alternatively you can use the Conda package directly (via
using Conda followed by Conda.add etcetera).

│ ) <class 'ImportError'>
│ ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python3.7 from "C:\Users\Farzad\AppData\Local\JuliaPro-1.5.3-1\Julia-1.5.3\bin\julia.exe"\n * The NumPy version is: "1.19.1"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: DLL load failed: The specified module could not be found.\n')
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_init_.py", line 99, in
│ from tensorflow_core import *
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_core_init_.py", line 34, in
│ from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_init_.py", line 50, in getattr
│ module = self.load()
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_init
.py", line 44, in load
│ module = importlib.import_module(self.name)
│ File "C:\Users\Farzad.julia\adcme\lib\importlib_init
.py", line 127, in import_module
│ return bootstrap.gcd_import(name[level:], package, level)
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_core\python_init
.py", line 47, in
│ import numpy as np
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\numpy_init
.py", line 140, in
│ from . import core
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\numpy\core_init.py", line 48, in
│ raise ImportError(msg)

│ Stacktrace:
│ [1] pyimport(::String) at C:\Users\Farzad.julia\packages\PyCall\BcTLp\src\PyCall.jl:547
│ [2] top-level scope at C:\Users\Farzad.julia\packages\ADCME\JzSON\deps\build.jl:77
│ [3] include(::String) at .\client.jl:457
│ [4] top-level scope at none:5
│ in expression starting at C:\Users\Farzad.julia\packages\ADCME\JzSON\deps\build.jl:77
└ @ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:949

topological sort failed when modifying examples

Hi,
when trying to adjust your example for "Function Inverse Problem: Sparse Data"
to the Poisson equation, I get messages like

2020-10-26 12:59:51.582303: E tensorflow/core/grappler/optimizers/dependency_optimizer.cc:697] Iteration = 0, topological sort failed with message: The graph couldn't be sorted in topological order.

I tried to recover f = pi^2 sin(pi*x) from u with -d^2/dx^2 u= f, which works reasonably well despite the error message.

So I'm wondering where I am using ADCME wrong, because these messages do not show up when I run the example.

Thanks for hints,
Bastian

using LinearAlgebra
using ADCME
using PyPlot

n = 101 
h = 1/(n-1)
x = LinRange(0,1,n)|>collect

u = sin.(π*x);
f_gt = @. π^2*u;

function residual_and_jac(θ, uu)

    f_nn = squeeze(fc(reshape(x[1:end-2],:,1), [20,20,1], θ)) + 1.
     
    u_full = vector(2:n-1, uu, n)

    laplacian_u = -(u_full[3:end]+u_full[1:end-2]-2u_full[2:end-1])/h^2

    res =  laplacian_u - f_nn

    J = gradients(res, uu)
    
    res, J
end

θ = Variable(fc_init([1,20,20,1]))
ADCME.options.newton_raphson.rtol = 1e-4 # relative tolerance
ADCME.options.newton_raphson.tol = 1e-4 # absolute tolerance
ADCME.options.newton_raphson.verbose = false # print details in newton_raphson

u_est = newton_raphson_with_grad(residual_and_jac, constant(zeros(n-2)),θ)
residual = u_est[1:5:end] - u[2:end-1][1:5:end]
loss = sum(residual^2)

f = squeeze(fc(reshape(x,:,1), [20,20,1], θ)) + 1.0
sess = Session(); init(sess)
BFGS!(sess, loss)

figure(figsize=(10,4))
subplot(121)
plot(x, f_gt, label="Reference")
plot(x, run(sess, f), "o", markersize=5., label="Estimated")
legend(); xlabel("\$u\$"); ylabel("\$f(x)\$"); grid("on")
subplot(122)
plot(x, (@. sin(π*x)), label="Reference")
plot(x[2:end-1], run(sess, u_est), "--", label="Estimated")
legend(); xlabel("\$x\$"); ylabel("\$u\$"); grid("on")

problem when update to V0.5.12

Hi, I installed ADCME v0.5.07 successfully on windows, however when I update ADCME to v0.5.12, it doesn't work. It said "you did not install tensorflow in the python version being used by PyCall".Could you help me? Thanks.

Repeated index in `sparse_to_dense`

Implement a kernel to merge duplicated index.

handle = SparseAssembler(0, 5)
op1 = accumulate(handle, 1, [1;2;3], ones(3))
op2 = accumulate(handle, 1, [3], [1.])
op3 = accumulate(handle, 2, [1;3], ones(2))
J = assemble(5, 5, [op1;op2;op3]) # op1, op2, op3 are parallel
J = Array(J)
run(sess, J)

Error message

2019-12-02 20:33:13.802253: W tensorflow/core/framework/op_kernel.cc:1502] OP_REQUIRES failed at sparse_to_dense_op.cc:128 : Invalid argument: indices[3] = [0,2] is repeated

MPI support

add MPI adjoint features.

For scientific computing, a good algorithm should have small communication overhead. Therefore, blocking send and receive should not work too worse than nonblocking ones. The MPI adjoint feature focuses only on blocking send and receive.

The idea is to implement 6 functions that are implemented with custom operators.

mpi_send 
mpi_recv 
mpi_sum
mpi_bcast 
mpi_init
mpi_finalize

The first four functions should implement gradient backprop

Error to compile pkg in MacOs Julia

I tried to add and precompile the ADCME pkg on MacOs Julia, but error message came up.
Want to check if the pkg compiling can support Julia 1.3 MacOs version or not.

Thanks

Efficient algorithm for solving tridiagonal matrix linear equations

In the first example in the README, the linear solver can be faster

"""
### References
* https://en.wikipedia.org/wiki/Tridiagonal_matrix_algorithm
"""
function trisolve!(A::AbstractVector, B::AbstractVector, C::AbstractVector, 
           D::AbstractVector, X::AbstractVector)
    N = length(X)
    B = copy(B)
    D = copy(D)
    @inbounds for i = 2:N
        W = A[i-1] / B[i - 1]
        B[i] = B[i] - W * C[i - 1]
        D[i] = D[i] - W * D[i - 1]
    end
    @inbounds X[N] = D[N] / B[N]
    @inbounds for i = N-1:-1:1
        X[i] = (D[i] - C[i] * X[i + 1]) / B[i]
    end
    return X
end

When A, Band C are uniform, we have

function trisolve!(a::T, b::T, c::T, D::AbstractVector, X::AbstractVector) where T
    N = length(X)
    D = copy(D)
    B = zeros(T, N)
    @inbounds B[1] = b
    @inbounds for i = 2:N
        w = a / B[i-1]
        B[i] = b - w * c
        D[i] = D[i] - w * D[i - 1]
    end
    @inbounds X[N] = D[N] / B[N]
    @inbounds for i = N-1:-1:1
        X[i] = (D[i] - c * X[i + 1]) / B[i]
    end
    return X
end

function myloss(b::T; n=101) where T
    h = 1/(n-1)
    x = LinRange(0,1,n)[2:end-1]
    f = @. T(4*(2 + x - x^2))

    u = trisolve!(-b/h^2, 2b/h^2+1, -b/h^2, f, zeros(T, n-2))
    ue = u[div(n+1,2)] # extract values at x=0.5

    return (ue-1.0)^2
end

myloss(10.0)

# the most efficient method to differentiate this program is forwarddiff
using ForwardDiff
myloss(ForwardDiff.Dual(10.0, 1.0))

The NiLang version is

using NiLang, NiLang.AD

@i function i_trisolve!(a::T, b::T, c::T, D!::AbstractVector, X!::AbstractVector, B!::AbstractVector) where T
    @invcheckoff @inbounds begin
    B![1] += b
    for i = 2:length(X!)
        @routine begin
            w  zero(T)
            w += a / B![i-1]
        end
        B![i] += b
        B![i] -= w * c
        D![i] -= w * D![i - 1]
        ~@routine
    end
    X![end] += D![end] / B![end]
    for i = length(X!)-1:-1:1
        @routine begin
            anc  zero(T)
            anc += D![i]
            anc -= c * X![i + 1]
        end
        X![i] += anc / B![i]
        ~@routine
    end
    end
end

@i function i_myloss!(loss::T, f!::AbstractVector{T}, u!::AbstractVector{T}, 
              b_cache!::AbstractVector{T}, b::T) where T
    @invcheckoff @inbounds begin
    n  length(f!) + 2
    h  zero(T)
    h += 1 / (n-1)
    for i=1:length(f!)
        @routine begin
            @zeros T xi anc
            xi += i * h
            anc += 2 + xi
            anc -= xi ^ 2
        end
        f![i] += 4 * anc
        ~@routine
    end

    @routine begin
        @zeros T h2 factor_a factor_b factor_c
        h2 += h^2
        factor_a -= b / h2
        factor_c += factor_a
        factor_b -= 2 * factor_a
        factor_b += 1
    end
    i_trisolve!(factor_a, factor_b, factor_c, f!, u!, b_cache!)
    ~@routine
    @routine begin
        ue  zero(T)
        ue += u![div(n+1,2)] # extract values at x=0.5
        ue -= 1
    end
    loss += ue^2
    ~@routine
    h -= 1 / (n-1)
    end
end

n = 101
i_myloss!(0.0, zeros(n-2), zeros(n-2), zeros(n-2), 10.0)
Grad(i_myloss!)(Val(1), 0.0, zeros(n-2), zeros(n-2), zeros(n-2), 10.0)

I get an error when building ADCME: ERROR: LoadError: empty intersection between [email protected] and project compatibility 1.4.0-1

┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Pkg.jl:729
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Pkg.jl:729
[ Info: Your Julia version is 1.9.3, current ADCME version is 0.7.3, ADCME dependencies installation path: C:\Users\lnguye01.julia\adcme
[ Info: --------------- (1/7) Install Tensorflow Dependencies ---------------
[ Info: ADCME dependencies have already been installed.
[ Info: --------------- (2/7) Check Python Version ---------------
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Pkg.jl:729
Building Conda ─→ C:\Users\lnguye01\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\8c86e48c0db1564a1d49548d3515ced5d604c408\build.log
┌ Warning: Could not use exact versions of packages in manifest, re-resolving
└ @ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1809
Building PyCall → C:\Users\lnguye01\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\1cb97fa63a3629c6d892af4f76fcc4ad8191837c\build.log
┌ Warning: Could not use exact versions of packages in manifest, re-resolving
└ @ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1809
ERROR: LoadError: empty intersection between [email protected] and project compatibility 1.4.0-1
Stacktrace:
[1] resolve_versions!(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{Pkg.Types.PackageSpec}, julia_version::VersionNumber, installed_only::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:390
[2] up(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, level::Pkg.Types.UpgradeLevel; skip_writing_project::Bool, preserve::Nothing)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1534
[3] up(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, preserve::Nothing, update_registry::Bool, skip_writing_project::Bool, kwargs::Base.Pairs{Symbol, Base.DevNull, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.DevNull}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:348
[4] up(ctx::Pkg.Types.Context; kwargs::Base.Pairs{Symbol, Any, NTuple{5, Symbol}, NamedTuple{(:level, :mode, :update_registry, :skip_writing_project, :io), Tuple{Pkg.Types.UpgradeLevel, Pkg.Types.PackageMode, Bool, Bool, Base.DevNull}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:161
[5] resolve(ctx::Pkg.Types.Context; skip_writing_project::Bool, kwargs::Base.Pairs{Symbol, Base.DevNull, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.DevNull}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:354
[6] (::Pkg.Operations.var"#117#122"{String, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.PackageSpec})()
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1811
[7] with_temp_env(fn::Pkg.Operations.var"#117#122"{String, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.PackageSpec}, temp_env::String)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1701
[8] (::Pkg.Operations.var"#115#120"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String})(tmp::String)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1790
[9] mktempdir(fn::Pkg.Operations.var"#115#120"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String}, parent::String; prefix::String)
@ Base.Filesystem .\file.jl:760
[10] mktempdir(fn::Function, parent::String)
@ Base.Filesystem .\file.jl:756
[11] mktempdir
@ .\file.jl:756 [inlined]
[12] sandbox(fn::Function, ctx::Pkg.Types.Context, target::Pkg.Types.PackageSpec, target_path::String, sandbox_path::String, sandbox_project_override::Pkg.Types.Project; preferences::Dict{String, Any}, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1748
[13] build_versions(ctx::Pkg.Types.Context, uuids::Set{Base.UUID}; verbose::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1134
[14] build_versions
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1049 [inlined]
[15] build(ctx::Pkg.Types.Context, uuids::Set{Base.UUID}, verbose::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:991
[16] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; verbose::Bool, kwargs::Base.Pairs{Symbol, IOContext{IOStream}, Tuple{Symbol}, NamedTuple{(:io,), Tuple{IOContext{IOStream}}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:1053
[17] build(pkgs::Vector{Pkg.Types.PackageSpec}; io::IOContext{IOStream}, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:156
[18] build(pkgs::Vector{Pkg.Types.PackageSpec})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:145
[19] #build#85
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:144 [inlined]
[20] build
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:144 [inlined]
[21] #build#84
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:143 [inlined]
[22] build(pkg::String)
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:143
[23] top-level scope
@ C:\Users\lnguye01.julia\packages\ADCME\94vEM\deps\build.jl:69
[24] include(fname::String)
@ Base.MainInclude .\client.jl:478
[25] top-level scope
@ none:5
in expression starting at C:\Users\lnguye01.julia\packages\ADCME\94vEM\deps\build.jl:69

caused by: empty intersection between [email protected] and project compatibility 1.4.0-1
Stacktrace:
[1] resolve_versions!(env::Pkg.Types.EnvCache, registries::Vector{Pkg.Registry.RegistryInstance}, pkgs::Vector{Pkg.Types.PackageSpec}, julia_version::VersionNumber, installed_only::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:390
[2] up(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, level::Pkg.Types.UpgradeLevel; skip_writing_project::Bool, preserve::Nothing)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1534
[3] up(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; level::Pkg.Types.UpgradeLevel, mode::Pkg.Types.PackageMode, preserve::Nothing, update_registry::Bool, skip_writing_project::Bool, kwargs::Base.Pairs{Symbol, Base.DevNull, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.DevNull}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:348
[4] up(ctx::Pkg.Types.Context; kwargs::Base.Pairs{Symbol, Any, NTuple{5, Symbol}, NamedTuple{(:level, :mode, :update_registry, :skip_writing_project, :io), Tuple{Pkg.Types.UpgradeLevel, Pkg.Types.PackageMode, Bool, Bool, Base.DevNull}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:161
[5] resolve(ctx::Pkg.Types.Context; skip_writing_project::Bool, kwargs::Base.Pairs{Symbol, Base.DevNull, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.DevNull}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:354
[6] (::Pkg.Operations.var"#117#122"{String, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.PackageSpec})()
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1803
[7] with_temp_env(fn::Pkg.Operations.var"#117#122"{String, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.PackageSpec}, temp_env::String)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1701
[8] (::Pkg.Operations.var"#115#120"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String})(tmp::String)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1790
[9] mktempdir(fn::Pkg.Operations.var"#115#120"{Dict{String, Any}, Bool, Bool, Bool, Pkg.Operations.var"#67#74"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec, String}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String}, parent::String; prefix::String)
@ Base.Filesystem .\file.jl:760
[10] mktempdir(fn::Function, parent::String)
@ Base.Filesystem .\file.jl:756
[11] mktempdir
@ .\file.jl:756 [inlined]
[12] sandbox(fn::Function, ctx::Pkg.Types.Context, target::Pkg.Types.PackageSpec, target_path::String, sandbox_path::String, sandbox_project_override::Pkg.Types.Project; preferences::Dict{String, Any}, force_latest_compatible_version::Bool, allow_earlier_backwards_compatible_versions::Bool, allow_reresolve::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1748
[13] build_versions(ctx::Pkg.Types.Context, uuids::Set{Base.UUID}; verbose::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1134
[14] build_versions
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:1049 [inlined]
[15] build(ctx::Pkg.Types.Context, uuids::Set{Base.UUID}, verbose::Bool)
@ Pkg.Operations C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\Operations.jl:991
[16] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; verbose::Bool, kwargs::Base.Pairs{Symbol, IOContext{IOStream}, Tuple{Symbol}, NamedTuple{(:io,), Tuple{IOContext{IOStream}}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:1053
[17] build(pkgs::Vector{Pkg.Types.PackageSpec}; io::IOContext{IOStream}, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:156
[18] build(pkgs::Vector{Pkg.Types.PackageSpec})
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:145
[19] #build#85
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:144 [inlined]
[20] build
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:144 [inlined]
[21] #build#84
@ C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:143 [inlined]
[22] build(pkg::String)
@ Pkg.API C:\Users\adminlocal\AppData\Local\Programs\Julia-1.9.3\share\julia\stdlib\v1.9\Pkg\src\API.jl:143
[23] top-level scope
@ C:\Users\lnguye01.julia\packages\ADCME\94vEM\deps\build.jl:69
[24] include(fname::String)
@ Base.MainInclude .\client.jl:478
[25] top-level scope
@ none:5

question about the uncertainty part

Hi, I have read the part about the uncertainty quantification of neural networks, and I'm confused about the log-likelihood function you mentioned, i.e. -sum((y[:,1] - obs[:,1]).^2)/2σ^2 - sum(x.^2)/2σx^2, especially the value of σ and σw. Is there any reference for this part? Thanks!

CITATION.bib

What would be the best reference to cite this package? :)

Build Custom Operators error

hello!
  when I trying to run the custom operators example , it occurs some errors as follows,it seems that there are some wrongs happened with the tensorflow but I don't know how to deal with it.
  and I am confued with signal (6): Aborted problem.If you can solve this problem, I would appreciate it!

test@P340:/data/test/project/007_inversion/ADCME_test/test_custom$ julia gradtest.jl 
Load library operator (with gradient, multiple outputs = false): /data/test/project/007_inversion/ADCME_test/test_custom/build/libMySparseSolver.so ==> my_sparse_solver
2021-12-29 17:23:18.679176: I tensorflow/core/platform/cpu_feature_guard.cc:145] This TensorFlow binary is optimized with Intel(R) MKL-DNN to use the following CPU instructions in performance critical operations:  SSE4.1 SSE4.2 AVX AVX2 FMA
To enable them in non-MKL-DNN operations, rebuild TensorFlow with the appropriate compiler flags.
2021-12-29 17:23:18.700633: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2899885000 Hz
2021-12-29 17:23:18.701170: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x4071d80 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2021-12-29 17:23:18.701186: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #210: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: 0-15
OMP: Info #156: KMP_AFFINITY: 16 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 1 packages x 8 cores/pkg x 2 threads/core (8 total cores)
OMP: Info #214: KMP_AFFINITY: OS proc to physical thread map:
OMP: Info #171: KMP_AFFINITY: OS proc 0 maps to package 0 core 0 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 8 maps to package 0 core 0 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 1 maps to package 0 core 1 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 9 maps to package 0 core 1 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 2 maps to package 0 core 2 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 10 maps to package 0 core 2 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 3 maps to package 0 core 3 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 11 maps to package 0 core 3 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 4 maps to package 0 core 4 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 12 maps to package 0 core 4 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 5 maps to package 0 core 5 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 13 maps to package 0 core 5 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 6 maps to package 0 core 6 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 14 maps to package 0 core 6 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 7 maps to package 0 core 7 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 15 maps to package 0 core 7 thread 1 
OMP: Info #250: KMP_AFFINITY: pid 22180 tid 22180 thread 0 bound to OS proc set 0
2021-12-29 17:23:18.702430: I tensorflow/core/common_runtime/process_util.cc:115] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
2021-12-29 17:23:18.741479: F tensorflow/core/framework/tensor_shape.cc:324] Check failed: size >= 0 (-1 vs. 0)

signal (6): Aborted
in expression starting at /data/test/project/007_inversion/ADCME_test/test_custom/gradtest.jl:23
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_ZN10tensorflow8internal15LogMessageFatalD1Ev at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow15TensorShapeBaseINS_11TensorShapeEE6AddDimEx at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/../libtensorflow_framework.so.1 (unknown line)
_ZN10tensorflow15TensorShapeBaseINS_11TensorShapeEE8InitDimsEN4absl4SpanIKxEE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/../libtensorflow_framework.so.1 (unknown line)
_ZN16MySparseSolverOp7ComputeEPN10tensorflow15OpKernelContextE at /data/test/project/007_inversion/ADCME_test/test_custom/build/libMySparseSolver.so (unknown line)
_ZN10tensorflow8grappler12EvaluateNodeERKNS_7NodeDefERKN4absl13InlinedVectorINS_11TensorValueELm4ESaIS6_EEEPNS_10DeviceBaseEPNS_11ResourceMgrEPS8_ at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZNK10tensorflow8grappler15ConstantFolding12EvaluateNodeERKNS_7NodeDefERKN4absl13InlinedVectorINS_11TensorValueELm4ESaIS7_EEEPS9_ at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler15ConstantFolding19EvaluateOneFoldableERKNS_7NodeDefEPSt6vectorIS2_SaIS2_EEPb at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler15ConstantFolding8FoldNodeEPNS_7NodeDefEPNS_8GraphDefEPb at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler15ConstantFolding9FoldGraphERKNS0_15GraphPropertiesEPNS_8GraphDefEPN4absl13flat_hash_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS7_18container_internal10StringHashENSF_12StringHashEq2EqESaISE_EEE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler15ConstantFolding19RunOptimizationPassEPNS0_7ClusterERKNS0_12GrapplerItemEPNS_8GraphDefE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler15ConstantFolding8OptimizeEPNS0_7ClusterERKNS0_12GrapplerItemEPNS_8GraphDefE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler13MetaOptimizer12RunOptimizerEPNS0_14GraphOptimizerEPNS0_7ClusterEPNS0_12GrapplerItemEPNS_8GraphDefEPNS1_23GraphOptimizationResultE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler13MetaOptimizer13OptimizeGraphEPNS0_7ClusterERKNS0_12GrapplerItemEPNS_8GraphDefE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler13MetaOptimizer8OptimizeEPNS0_7ClusterERKNS0_12GrapplerItemEPNS_8GraphDefE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow8grappler16RunMetaOptimizerERKNS0_12GrapplerItemERKNS_11ConfigProtoEPNS_10DeviceBaseEPNS0_7ClusterEPNS_8GraphDefE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow19GraphExecutionState13OptimizeGraphERKNS_17BuildGraphOptionsEPSt10unique_ptrINS_5GraphESt14default_deleteIS5_EEPS4_INS_25FunctionLibraryDefinitionES6_ISA_EE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow19GraphExecutionState10BuildGraphERKNS_17BuildGraphOptionsEPSt10unique_ptrINS_11ClientGraphESt14default_deleteIS5_EE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow13DirectSession12CreateGraphsERKNS_17BuildGraphOptionsEPSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10unique_ptrINS_5GraphESt14default_deleteISC_EESt4hashISA_ESt8equal_toISA_ESaISt4pairIKSA_SF_EEEPSB_INS_25FunctionLibraryDefinitionESD_ISQ_EEPNS0_12RunStateArgsEPN4absl13InlinedVectorINS_8DataTypeELm4ESaISY_EEES11_Px at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow13DirectSession15CreateExecutorsERKNS_15CallableOptionsEPSt10unique_ptrINS0_16ExecutorsAndKeysESt14default_deleteIS5_EEPS4_INS0_12FunctionInfoES6_ISA_EEPNS0_12RunStateArgsE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow13DirectSession20GetOrCreateExecutorsEN4absl4SpanIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESA_SA_PPNS0_16ExecutorsAndKeysEPNS0_12RunStateArgsE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow13DirectSession3RunERKNS_10RunOptionsERKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6TensorEESaISD_EERKS4_ISB_SaISB_EESL_PS4_ISC_SaISC_EEPNS_11RunMetadataE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow10SessionRef3RunERKNS_10RunOptionsERKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6TensorEESaISD_EERKS4_ISB_SaISB_EESL_PS4_ISC_SaISC_EEPNS_11RunMetadataE at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZL13TF_Run_HelperPN10tensorflow7SessionEPKcPK9TF_BufferRKSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_6TensorEESaISG_EERKS7_ISE_SaISE_EEPP9TF_TensorSO_PS4_P9TF_Status.constprop.637 at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
TF_SessionRun at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow28TF_SessionRun_wrapper_helperEP10TF_SessionPKcPK9TF_BufferRKSt6vectorI9TF_OutputSaIS8_EERKS7_IP7_objectSaISE_EESC_RKS7_IP12TF_OperationSaISK_EEPS4_P9TF_StatusPSG_ at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_ZN10tensorflow21TF_SessionRun_wrapperEP10TF_SessionPK9TF_BufferRKSt6vectorI9TF_OutputSaIS6_EERKS5_IP7_objectSaISC_EESA_RKS5_IP12TF_OperationSaISI_EEPS2_P9TF_StatusPSE_ at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_wrap_TF_SessionRun_wrapper at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)
_PyMethodDef_RawFastCallKeywords at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyCFunction_FastCallKeywords at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1542 at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1542 at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1542 at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallKeywords at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1542 at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
function_code_fastcall at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
call_function.lto_priv.1542 at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalFrameDefault at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyEval_EvalCodeWithName at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyFunction_FastCallDict at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
_PyObject_Call_Prepend at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
PyObject_Call at /home/node/.julia/adcme/lib/libpython3.7m.so.1.0 (unknown line)
macro expansion at /home/node/.julia/packages/PyCall/3fwVL/src/exception.jl:95 [inlined]
#107 at /home/node/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:43 [inlined]
disable_sigint at ./c.jl:458 [inlined]
__pycall! at /home/node/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:42 [inlined]
_pycall! at /home/node/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:29
_pycall! at /home/node/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:11
unknown function (ip: 0x7f817c4bbc33)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
#_#114 at /home/node/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:86
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
do_apply at /buildworker/worker/package_linux64/build/src/builtins.c:670
PyObject at /home/node/.julia/packages/PyCall/3fwVL/src/pyfncall.jl:86
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
#run#67 at /home/node/.julia/packages/ADCME/hCmEo/src/run.jl:73
run at /home/node/.julia/packages/ADCME/hCmEo/src/run.jl:69
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
do_call at /buildworker/worker/package_linux64/build/src/interpreter.c:115
eval_value at /buildworker/worker/package_linux64/build/src/interpreter.c:204
eval_stmt_value at /buildworker/worker/package_linux64/build/src/interpreter.c:155 [inlined]
eval_body at /buildworker/worker/package_linux64/build/src/interpreter.c:562
jl_interpret_toplevel_thunk at /buildworker/worker/package_linux64/build/src/interpreter.c:670
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:877
jl_toplevel_eval_flex at /buildworker/worker/package_linux64/build/src/toplevel.c:825
jl_toplevel_eval_in at /buildworker/worker/package_linux64/build/src/toplevel.c:929
eval at ./boot.jl:360 [inlined]
include_string at ./loading.jl:1116
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
_include at ./loading.jl:1170
include at ./Base.jl:386
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
exec_options at ./client.jl:285
_start at ./client.jl:485
jfptr__start_43689.clone_1 at /home/node/Downloads/julia-1.6.3/lib/julia/sys.so (unknown line)
_jl_invoke at /buildworker/worker/package_linux64/build/src/gf.c:2237 [inlined]
jl_apply_generic at /buildworker/worker/package_linux64/build/src/gf.c:2419
jl_apply at /buildworker/worker/package_linux64/build/src/julia.h:1703 [inlined]
true_main at /buildworker/worker/package_linux64/build/src/jlapi.c:560
repl_entrypoint at /buildworker/worker/package_linux64/build/src/jlapi.c:702
main at julia (unknown line)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x4007d8)
Allocations: 9370211 (Pool: 9366630; Big: 3581); GC: 12
Aborted (core dumped)

PackagesNotFoundError when install ADCME

There is an error when I install ADCME in Julia 1.0. I need help. Thanks.

│ PackagesNotFoundError: The following packages are not available from current channels:

│ - zip

│ Current channels:

│ - https://repo.anaconda.com/pkgs/main/win-64
│ - https://repo.anaconda.com/pkgs/main/noarch
│ - https://repo.anaconda.com/pkgs/r/win-64
│ - https://repo.anaconda.com/pkgs/r/noarch
│ - https://repo.anaconda.com/pkgs/msys2/win-64
│ - https://repo.anaconda.com/pkgs/msys2/noarch

│ To search for alternate channels that may provide the conda package you're
│ looking for, navigate to

Vectorized For Loop

tf.vectorized_map avoids tf.while_loop and claims to be efficient for data-independent loops. Research this function and incorporate this feature into ADCME.

fc() cant be labeled when initialising the weights

config = [20, 20, 20, 20, 20, 20, 20, 20, 1]
θ = Variable(fc_init([2; config]))

u_nn = squeeze(fc(train_input, config, θ, "concave")) + 1

I got this kind of code but it only runs if i choose between labling the NN of initialising the weights. When doing both I get this error:

ERROR: LoadError: MethodError: no method matching ae(::PyCall.PyObject, ::Array{Int64,1}, ::PyCall.PyObject, ::String)

Julia custom operator does not work when Variables are present

When there is a Variable in the upstream operations, Julia custom operator will fail.

Example: JuliaOpModule in ADCME.jl

push!(LOAD_PATH, "..")
include("../JuliaOpModule.jl")
using ADCME
import JuliaOpModule:do_it, DoIt!
x = Variable(rand(100))
y = 2x # or `y = Variable(rand(100))`
u = do_it(y)
sess = Session()
init(sess)
run(sess, u)

Internal Error encountered during indexing

For example, the following code will throw InternalError

using ADCME
x = placeholder(Int64, shape=[nothing])
a = constant(rand(10,2))
sess = Session(); init(sess)
run(sess, a[x], Dict(x=>[1;2;3]))

Error in using packages in julia: I am encountering the following error after successfully adding the required packages.But im a having the following error while using them

ERROR: LoadError: Failed to precompile VectorizationBase [3d5dd08c-fd9d-11e8-17fa-ed2836048c2f] to C:\Users\satya.julia\compiled\v1.7\VectorizationBase\jl_FE22.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:997
[7] include
@ .\Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base .\loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ .\boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude .\client.jl:453
[12] top-level scope
@ none:1
in expression starting at C:\Users\satya.julia\packages\LoopVectorization\AP42K\src\LoopVectorization.jl:1
ERROR: LoadError: Failed to precompile LoopVectorization [bdcacae8-1622-11e9-2a5c-532679323890] to C:\Users\satya.julia\compiled\v1.7\LoopVectorization\jl_FC6D.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:997
[7] include(mod::Module, _path::String)
@ Base .\Base.jl:418
[8] include(x::String)
@ RecursiveFactorization C:\Users\satya.julia\packages\RecursiveFactorization\jZvER\src\RecursiveFactorization.jl:1
[9] top-level scope
@ C:\Users\satya.julia\packages\RecursiveFactorization\jZvER\src\RecursiveFactorization.jl:3
[10] include
@ .\Base.jl:418 [inlined]
[11] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base .\loading.jl:1318
[12] top-level scope
@ none:1
[13] eval
@ .\boot.jl:373 [inlined]
[14] eval(x::Expr)
@ Base.MainInclude .\client.jl:453
[15] top-level scope
@ none:1
in expression starting at C:\Users\satya.julia\packages\RecursiveFactorization\jZvER\src\lu.jl:1
in expression starting at C:\Users\satya.julia\packages\RecursiveFactorization\jZvER\src\RecursiveFactorization.jl:1
ERROR: LoadError: Failed to precompile RecursiveFactorization [f2c3362d-daeb-58d1-803e-2bc74f2840b4] to C:\Users\satya.julia\compiled\v1.7\RecursiveFactorization\jl_FB63.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:997
[7] include
@ .\Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base .\loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ .\boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude .\client.jl:453
[12] top-level scope
@ none:1
in expression starting at C:\Users\satya.julia\packages\NonlinearSolve\hDIt1\src\NonlinearSolve.jl:1
ERROR: LoadError: Failed to precompile NonlinearSolve [8913a72c-1f9b-4ce2-8d82-65094dcecaec] to C:\Users\satya.julia\compiled\v1.7\NonlinearSolve\jl_F597.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:997
[7] include
@ .\Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base .\loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ .\boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude .\client.jl:453
[12] top-level scope
@ none:1
in expression starting at C:\Users\satya.julia\packages\DiffEqBase\VN57T\src\DiffEqBase.jl:1
ERROR: LoadError: Failed to precompile DiffEqBase [2b5f629d-d688-5b77-993f-72d75c75574e] to C:\Users\satya.julia\compiled\v1.7\DiffEqBase\jl_F19F.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:997
[7] include
@ .\Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::String)
@ Base .\loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ .\boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude .\client.jl:453
[12] top-level scope
@ none:1
in expression starting at C:\Users\satya.julia\packages\OrdinaryDiffEq\5B7d7\src\OrdinaryDiffEq.jl:1
ERROR: LoadError: Failed to precompile OrdinaryDiffEq [1dea7af3-3e70-54e6-95c3-0bf5283fa5ed] to C:\Users\satya.julia\compiled\v1.7\OrdinaryDiffEq\jl_EFBB.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:997
[7] include
@ .\Base.jl:418 [inlined]
[8] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
@ Base .\loading.jl:1318
[9] top-level scope
@ none:1
[10] eval
@ .\boot.jl:373 [inlined]
[11] eval(x::Expr)
@ Base.MainInclude .\client.jl:453
[12] top-level scope
@ none:1
in expression starting at C:\Users\satya.julia\packages\ControlSystems\8ZZyh\src\ControlSystems.jl:1
ERROR: Failed to precompile ControlSystems [a6e380b2-a6ca-5380-bf3e-84a91bcd477e] to C:\Users\satya.julia\compiled\v1.7\ControlSystems\jl_EC9F.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1466
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1410
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1120
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:1013
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:997

Link with DifferentialEquations.jl

You can easily link DifferentialEquations.jl in with this system by defining an adjoint rule on its concrete_solve to utilize the adjoint method. The documentation on that part is defined in:

https://docs.juliadiffeq.org/latest/analysis/sensitivity/

The differentiation rules are defined in:

https://github.com/JuliaDiffEq/DiffEqBase.jl/blob/master/src/solve.jl#L198-L226

so you only need to map those 10 or so lines to drop down to a concrete_solve adjoint pass and it'll work.

installation directory

Hi Kailai,

The installation of ADCME on my laptop worked fine, but when I tried to install ADCME on a local cluster with a file quota, I noticed that ADCME ignored the JULIA_DEPOT_PATH setting and tried to install to ~/.julia. All other packages were installed under the desired path.

Regards,
Jian

Error running ADCME in docker

I have followed the download instructions for the Docker from the documentation and I am getting the following error on my Apple M1 Pro Mac, 13.2.1 (22D68), 16Gb RAM, when trying to import ADCME.

julia> using ADCME
2024-05-15 10:40:42.634782: F tensorflow/core/platform/cpu_feature_guard.cc:37] The TensorFlow library was compiled to use AVX instructions, but these aren't available on your machine.

Implementing a GAN inferface

Provide an API for flexible implementation of GANs.

gan = GAN(X) # or `gan = GAN(shape)`
gan.generator = gen
gan.discriminator = dis 
gan.loss = "kl" 
build!(gan)

train!(gan, epochs=30000, batch_size=32,
    d_callback, g_callback)

# more control on the training process
gan.d_loss 
gan.g_loss 
gan.fake_data
gan.true_data
gan.dopt # optimizer for discriminators
gan.gopt # optimizer for generators

Reference:
[1] https://github.com/eriklindernoren/Keras-GAN

Error: Error building `ADCME`:

┌ Error: Error building ADCME:
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Pkg.jl:554
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Pkg.jl:554
│ [ Info: Your Julia version is 1.5.3, current ADCME version is 0.5.13, ADCME dependencies installation path: C:\Users\Farzad.julia\adcme
│ [ Info: --------------- (1/6) Install Tensorflow Dependencies ---------------
│ [ Info: ADCME dependencies have already been installed
│ [ Info: --------------- (2/6) Check Python Version ---------------
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Pkg.jl:554
│ Building Conda ─→ C:\Users\Farzad.julia\packages\Conda\x5ml4\deps\build.log
│ Building PyCall → C:\Users\Farzad.julia\packages\PyCall\BcTLp\deps\build.log
│ ┌ Info: PyCall Python version: C:\Users\Farzad.julia\adcme\python.exe
│ └ Conda Python version: C:\Users\Farzad.julia\adcme\python.exe
│ [ Info: --------------- (3/6) Looking for TensorFlow Dynamic Libraries ---------------
│ ERROR: LoadError: PyError (PyImport_ImportModule

│ The Python package tensorflow could not be imported by pyimport. Usually this means
│ that you did not install tensorflow in the Python version being used by PyCall.

│ PyCall is currently configured to use the Python version at:

│ C:\Users\Farzad.julia\adcme\python.exe

│ and you should use whatever mechanism you usually use (apt-get, pip, conda,
│ etcetera) to install the Python package containing the tensorflow module.

│ One alternative is to re-configure PyCall to use a different Python
│ version on your system: set ENV["PYTHON"] to the path/name of the python
│ executable you want to use, run Pkg.build("PyCall"), and re-launch Julia.

│ Another alternative is to configure PyCall to use a Julia-specific Python
│ distribution via the Conda.jl package (which installs a private Anaconda
│ Python distribution), which has the advantage that packages can be installed
│ and kept up-to-date via Julia. As explained in the PyCall documentation,
│ set ENV["PYTHON"]="", run Pkg.build("PyCall"), and re-launch Julia. Then,
│ To install the tensorflow module, you can use pyimport_conda("tensorflow", PKG),
│ where PKG is the Anaconda package the contains the module tensorflow,
│ or alternatively you can use the Conda package directly (via
│ using Conda followed by Conda.add etcetera).

│ ) <class 'ImportError'>
│ ImportError('\n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python3.7 from "C:\Users\Farzad\AppData\Local\JuliaPro-1.5.3-1\Julia-1.5.3\bin\julia.exe"\n * The NumPy version is: "1.19.1"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: DLL load failed: The specified module could not be found.\n')
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_init_.py", line 99, in
│ from tensorflow_core import *
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_core_init_.py", line 34, in
│ from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_init_.py", line 50, in getattr
│ module = self.load()
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_init.py", line 44, in load
│ module = importlib.import_module(self.name)
│ File "C:\Users\Farzad.julia\adcme\lib\importlib_init.py", line 127, in import_module
│ return bootstrap.gcd_import(name[level:], package, level)
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\tensorflow_core\python_init.py", line 47, in
│ import numpy as np
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\numpy_init.py", line 140, in
│ from . import core
│ File "C:\Users\Farzad.julia\adcme\lib\site-packages\numpy\core_init.py", line 48, in
│ raise ImportError(msg)

│ Stacktrace:
│ [1] pyimport(::String) at C:\Users\Farzad.julia\packages\PyCall\BcTLp\src\PyCall.jl:547
│ [2] top-level scope at C:\Users\Farzad.julia\packages\ADCME\JzSON\deps\build.jl:77
│ [3] include(::String) at .\client.jl:457
│ [4] top-level scope at none:5
│ in expression starting at C:\Users\Farzad.julia\packages\ADCME\JzSON\deps\build.jl:77
└ @ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.5\Pkg\src\Operations.jl:949

ADCME.jl stuck on Tensorflow Installation [MacOS]

Hi,

I have been struggling with the installation of ADCME.jl for almost an entire afternoon, when I found in ADSeismic.jl that it may take up to 20 min. So, I let the installation run with build and the verbose flag. It turns out I can't get past the TensorFlow Library building.

I'm using a clean installation of Julia 1.5.2 (rm -rf ~/.julia) and then

using Pkg
Pkg.add("ADCME"; verbose = true)

The build log is pasted below

Thanks!

Lucas


PS: I ended cancelling the installation a bunch of times since I always thought "it can't take thaat long". I even cleared out my entire Julia because I thought I had some old package that didn't install correctly! It would be nice, if it said how long the installation approximately takes since it's longer than the average Julia package!


Verbose Build Output

julia> Pkg.build("ADCME"; verbose = true)
   Building Conda ─ `~/.julia/packages/Conda/x5ml4/deps/build.log`
   Building PyCall  `~/.julia/packages/PyCall/BcTLp/deps/build.log`
┌ Info: No system-wide Python was found; got the following error:
│ Base.IOError("could not spawn setenv(`/Users/lucassawade/.julia/adcme/bin/python -c \"import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'))\"`,[\"CLICOLOR=true\", \"LSCOLORS=Exfxbxdxcxegedabagacad\", \"PATH=/Users/lucassawade/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/usr/local/munki:/opt/X11/bin:/Library/Apple/usr/bin:/Applications/MATLAB_R2018a.app/bin/:/Users/lucassawade/GCMT/sod-3.2.8/bin:/Users/lucassawade/SeisFunc:/Users/lucassawade/MERMAID/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Users/lucassawade/.lisp\", \"XPC_FLAGS=0x0\", \"PWD=/Users/lucassawade\", \"_CE_M=\", \"DISPLAY=/private/tmp/com.apple.launchd.1l6jvW3OkT/org.macosforge.xquartz:0\", \"XPC_SERVICE_NAME=0\", \"TERM_PROGRAM=Apple_Terminal\", \"CONDA_PYTHON_EXE=/Users/lucassawade/anaconda3/bin/python\", \"SHELL=/bin/zsh\", \"__CF_USER_TEXT_ENCODING=0x1F7:0x0:0x0\", \"OPENBLAS_NUM_THREADS=8\", \"TMPDIR=/tmp\", \"LANG=en_US.UTF-8\", \"SHLVL=1\", \"LOGNAME=lucassawade\", \"LaunchInstanceID=90707609-3965-4587-9644-28C8B912CE67\", \"TERM_SESSION_ID=17331E03-9DD4-4875-9ED9-2EAE266DE14A\", \"SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.u9QlMRcDar/Listeners\", \"PYTHONSTARTUP=/Users/lucassawade/OneDrive/Python/lwsspy/startupfiles/python.py\", \"JULIA_LOAD_PATH=@:/tmp/jl_LHEUZA\", \"_=/Applications/Julia-1.5.app/Contents/Resources/julia/bin/julia\", \"_CE_CONDA=\", \"USER=lucassawade\", \"CONDA_SHLVL=0\", \"PROMPT_COMMAND=ps1; echo -ne \\\"\\\\033]0;\\\${USER}@\\\${HOSTNAME}: \\\${PWD}\\\\007\\\"\", \"SECURITYSESSIONID=186a8\", \"CONDA_EXE=/Users/lucassawade/anaconda3/bin/conda\", \"TERM=xterm-256color\", \"HOME=/Users/lucassawade\", \"TERM_PROGRAM_VERSION=433\", \"OPENBLAS_MAIN_FREE=1\", \"PYTHONIOENCODING=UTF-8\"]): no such file or directory (ENOENT)", -2)
└ using the Python distribution in the Conda package
[ Info: Running `conda install -y numpy` in root environment
Collecting package metadata (current_repodata.json): done
Solving environment: done

# All requested packages already installed.

[ Info: PyCall is using /Users/lucassawade/.julia/conda/3/bin/python (Python 3.8.5) at /Users/lucassawade/.julia/conda/3/bin/python, libpython = /Users/lucassawade/.julia/conda/3/lib/libpython3.8.dylib
[ Info: /Users/lucassawade/.julia/packages/PyCall/BcTLp/deps/deps.jl has been updated
[ Info: /Users/lucassawade/.julia/prefs/PyCall has been updated
   Building CMake ─ `~/.julia/packages/CMake/ULbyn/deps/build.log`
   Building HDF5 ── `~/.julia/packages/HDF5/YX0jU/deps/build.log`
   Building FFTW ── `~/.julia/packages/FFTW/DMUbN/deps/build.log`
   Building ADCME ─ `~/.julia/packages/ADCME/x8M7v/deps/build.log`
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/Pkg/src/Pkg.jl:554
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/Pkg/src/Pkg.jl:554
[ Info: Your Julia version is 1.5.3, current ADCME version is 0.6.6, ADCME dependencies installation path: /Users/lucassawade/.julia/adcme
[ Info:  --------------- (1/6) Install Tensorflow Dependencies  --------------- 
[ Info: Installing miniconda...
PREFIX=/Users/lucassawade/.julia/adcme
Unpacking payload ...
Collecting package metadata (current_repodata.json): done                                                                                                                  
Solving environment: done

## Package Plan ##

  environment location: /Users/lucassawade/.julia/adcme

  added / updated specs:
    - ca-certificates==2020.1.1=0
    - certifi==2020.4.5.1=py37_0
    - cffi==1.14.0=py37hc512035_1
    - chardet==3.0.4=py37_1003
    - conda-package-handling==1.6.1=py37h1de35cc_0
    - conda==4.8.3=py37_0
    - cryptography==2.9.2=py37ha12b0ac_0
    - idna==2.9=py_1
    - libcxx==10.0.0=1
    - libedit==3.1.20181209=hb402a30_0
    - libffi==3.3=h0a44026_1
    - ncurses==6.2=h0a44026_1
    - openssl==1.1.1g=h1de35cc_0
    - pip==20.0.2=py37_3
    - pycosat==0.6.3=py37h1de35cc_0
    - pycparser==2.20=py_0
    - pyopenssl==19.1.0=py37_0
    - pysocks==1.7.1=py37_0
    - python.app==2=py37_10
    - python==3.7.7=hf48f09d_4
    - readline==8.0=h1de35cc_0
    - requests==2.23.0=py37_0
    - ruamel_yaml==0.15.87=py37h1de35cc_0
    - setuptools==46.4.0=py37_0
    - six==1.14.0=py37_0
    - sqlite==3.31.1=h5c1f38d_1
    - tk==8.6.8=ha441bb4_0
    - tqdm==4.46.0=py_0
    - urllib3==1.25.8=py37_0
    - wheel==0.34.2=py37_0
    - xz==5.2.5=h1de35cc_0
    - yaml==0.1.7=hc338f04_2
    - zlib==1.2.11=h1de35cc_3


The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/osx-64::ca-certificates-2020.1.1-0
  certifi            pkgs/main/osx-64::certifi-2020.4.5.1-py37_0
  cffi               pkgs/main/osx-64::cffi-1.14.0-py37hc512035_1
  chardet            pkgs/main/osx-64::chardet-3.0.4-py37_1003
  conda              pkgs/main/osx-64::conda-4.8.3-py37_0
  conda-package-han~ pkgs/main/osx-64::conda-package-handling-1.6.1-py37h1de35cc_0
  cryptography       pkgs/main/osx-64::cryptography-2.9.2-py37ha12b0ac_0
  idna               pkgs/main/noarch::idna-2.9-py_1
  libcxx             pkgs/main/osx-64::libcxx-10.0.0-1
  libedit            pkgs/main/osx-64::libedit-3.1.20181209-hb402a30_0
  libffi             pkgs/main/osx-64::libffi-3.3-h0a44026_1
  ncurses            pkgs/main/osx-64::ncurses-6.2-h0a44026_1
  openssl            pkgs/main/osx-64::openssl-1.1.1g-h1de35cc_0
  pip                pkgs/main/osx-64::pip-20.0.2-py37_3
  pycosat            pkgs/main/osx-64::pycosat-0.6.3-py37h1de35cc_0
  pycparser          pkgs/main/noarch::pycparser-2.20-py_0
  pyopenssl          pkgs/main/osx-64::pyopenssl-19.1.0-py37_0
  pysocks            pkgs/main/osx-64::pysocks-1.7.1-py37_0
  python             pkgs/main/osx-64::python-3.7.7-hf48f09d_4
  python.app         pkgs/main/osx-64::python.app-2-py37_10
  readline           pkgs/main/osx-64::readline-8.0-h1de35cc_0
  requests           pkgs/main/osx-64::requests-2.23.0-py37_0
  ruamel_yaml        pkgs/main/osx-64::ruamel_yaml-0.15.87-py37h1de35cc_0
  setuptools         pkgs/main/osx-64::setuptools-46.4.0-py37_0
  six                pkgs/main/osx-64::six-1.14.0-py37_0
  sqlite             pkgs/main/osx-64::sqlite-3.31.1-h5c1f38d_1
  tk                 pkgs/main/osx-64::tk-8.6.8-ha441bb4_0
  tqdm               pkgs/main/noarch::tqdm-4.46.0-py_0
  urllib3            pkgs/main/osx-64::urllib3-1.25.8-py37_0
  wheel              pkgs/main/osx-64::wheel-0.34.2-py37_0
  xz                 pkgs/main/osx-64::xz-5.2.5-h1de35cc_0
  yaml               pkgs/main/osx-64::yaml-0.1.7-hc338f04_2
  zlib               pkgs/main/osx-64::zlib-1.2.11-h1de35cc_3


Preparing transaction: done
Executing transaction: done
installation finished.
Collecting package metadata (repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.8.3
  latest version: 4.9.2

Please update conda by running

    $ conda update -n base -c defaults conda



Downloading and Extracting Packages
make-4.3             | 249 KB    | ################################################################################################################################ | 100% 
importlib-metadata-1 | 44 KB     | ################################################################################################################################ | 100% 
tensorflow-1.15.0    | 4 KB      | ################################################################################################################################ | 100% 
hdf5-1.10.6          | 3.0 MB    | ################################################################################################################################ | 100% 
libopenblas-0.3.10   | 8.2 MB    | ################################################################################################################################ | 100% 
gast-0.2.2           | 10 KB     | ################################################################################################################################ | 100% 
unzip-6.0            | 149 KB    | ################################################################################################################################ | 100% 
werkzeug-0.16.1      | 258 KB    | ################################################################################################################################ | 100% 
llvm-openmp-10.0.1   | 265 KB    | ################################################################################################################################ | 100% 
clang-10.0.1         | 12.1 MB   | ################################################################################################################################ | 100% 
openssl-1.1.1g       | 1.9 MB    | ################################################################################################################################ | 100% 
libllvm10-10.0.1     | 20.8 MB   | ################################################################################################################################ | 100% 
tapi-1000.10.8       | 4.9 MB    | ################################################################################################################################ | 100% 
tensorboard-1.15.0   | 3.8 MB    | ################################################################################################################################ | 100% 
tensorflow-probabili | 1.2 MB    | ################################################################################################################################ | 100% 
wrapt-1.12.1         | 42 KB     | ################################################################################################################################ | 100% 
grpcio-1.30.0        | 1.9 MB    | ################################################################################################################################ | 100% 
libgfortran-4.0.0    | 716 KB    | ################################################################################################################################ | 100% 
cloudpickle-1.5.0    | 22 KB     | ################################################################################################################################ | 100% 
tensorflow-estimator | 271 KB    | ################################################################################################################################ | 100% 
openblas-0.3.10      | 9.1 MB    | ################################################################################################################################ | 100% 
lapack-3.6.1         | 2.1 MB    | ################################################################################################################################ | 100% 
absl-py-0.9.0        | 162 KB    | ################################################################################################################################ | 100% 
libgcc-4.8.5         | 785 KB    | ################################################################################################################################ | 100% 
zipp-3.1.0           | 13 KB     | ################################################################################################################################ | 100% 
certifi-2020.6.20    | 151 KB    | ################################################################################################################################ | 100% 
libclang-cpp10-10.0. | 11.7 MB   | ################################################################################################################################ | 100% 
c-ares-1.16.1        | 91 KB     | ################################################################################################################################ | 100% 
ld64-530             | 14 KB     | ################################################################################################################################ | 100% 
ninja-1.10.0         | 108 KB    | ################################################################################################################################ | 100% 
python_abi-3.7       | 4 KB      | ################################################################################################################################ | 100% 
liblapack-3.8.0      | 11 KB     | ################################################################################################################################ | 100% 
scipy-1.5.1          | 19.0 MB   | ################################################################################################################################ | 100% 
h5py-2.10.0          | 925 KB    | ################################################################################################################################ | 100% 
libcblas-3.8.0       | 11 KB     | ################################################################################################################################ | 100% 
keras-applications-1 | 29 KB     | ################################################################################################################################ | 100% 
_tflow_select-2.3.0  | 3 KB      | ################################################################################################################################ | 100% 
clangxx-10.0.1       | 123 KB    | ################################################################################################################################ | 100% 
numpy-1.19.1         | 5.1 MB    | ################################################################################################################################ | 100% 
libprotobuf-3.12.3   | 2.1 MB    | ################################################################################################################################ | 100% 
keras-preprocessing- | 36 KB     | ################################################################################################################################ | 100% 
ld64_osx-64-530      | 1.3 MB    | ################################################################################################################################ | 100% 
google-pasta-0.2.0   | 42 KB     | ################################################################################################################################ | 100% 
astor-0.8.1          | 25 KB     | ################################################################################################################################ | 100% 
protobuf-3.12.3      | 688 KB    | ################################################################################################################################ | 100% 
decorator-4.4.2      | 14 KB     | ################################################################################################################################ | 100% 
ca-certificates-2020 | 146 KB    | ################################################################################################################################ | 100% 
libblas-3.8.0        | 11 KB     | ################################################################################################################################ | 100% 
opt_einsum-3.3.0     | 51 KB     | ################################################################################################################################ | 100% 
termcolor-1.1.0      | 6 KB      | ################################################################################################################################ | 100% 
conda-4.8.4          | 3.0 MB    | ################################################################################################################################ | 100% 
tensorflow-base-1.15 | 75.8 MB   | ################################################################################################################################ | 100% 
markdown-3.2.2       | 61 KB     | ################################################################################################################################ | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate base
#
# To deactivate an active environment, use
#
#     $ conda deactivate

[ Info:  --------------- (2/6) Check Python Version  --------------- 
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/Pkg/src/Pkg.jl:554
   Building Conda ─ `~/.julia/packages/Conda/x5ml4/deps/build.log`
   Building PyCall  `~/.julia/packages/PyCall/BcTLp/deps/build.log`
┌ Info: PyCall Python version: /Users/lucassawade/.julia/adcme/bin/python
└ Conda Python version: /Users/lucassawade/.julia/adcme/bin/python
[ Info:  --------------- (3/6) Looking for TensorFlow Dynamic Libraries --------------- 

How do you get solution vector?

Greetings!

I have questions about how you treat the solution vector. In the simple example shown here, you just used u = B \ f. However, in the paper, it appears to me the complete solution vector is obtained from a FEM solution, kept unchanged and used to calibrate in the training process. Theoretically, you could also use something like u = B \ f. And using previous is impractical for experimental data as you cannot get the full solution vector. Are there any issues combining autograd and solving a large linear system?

ADCME installation problem on Windows

HI,
I encountered a problem while building ADCME。
Error: Error buildingADCME: │ The system cannot find the file specified. │ ┌ Warning: Pkg.installed() is deprecated │ └ @ Pkg D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Pkg.jl:531 │ ┌ Warning: Pkg.installed() is deprecated │ └ @ Pkg D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Pkg.jl:531 │ [ Info: Your Julia version is 1.4.2, current ADCME version is 0.7.3, ADCME dependencies installation path: C:\Users\Hello\.julia\adcme │ [ Info: --------------- (1/7) Install Tensorflow Dependencies --------------- │ [ Info: ADCME dependencies have already been installed. │ [ Info: --------------- (2/7) Check Python Version --------------- │ ┌ Warning: Pkg.installed() is deprecated │ └ @ Pkg D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Pkg.jl:531 │ Building Conda ─→ C:\Users\Hello.julia\packages\Conda\sNGum\deps\build.log│ Building PyCall →C:\Users\Hello.julia\packages\PyCall\3fwVL\deps\build.log │ ┌ Info: PyCall Python version: C:\Users\Hello\.julia\adcme\python.exe │ └ Conda Python version: C:\Users\Hello\.julia\adcme\python.exe │ [ Info: --------------- (3/7) Looking for TensorFlow Dynamic Libraries --------------- │ [ Info: --------------- (Windows) Downloading Include Files for Custom Operators --------------- │ ERROR: LoadError: failed process: Process(cmd /c rmdir /s /q 'C:\Users\Hello.julia\adcme\lib\site-packages\tensorflow_core\include', ProcessExited(2)) [2] │ │ Stacktrace: │ [1] pipeline_error at .\process.jl:525 [inlined] │ [2] run(::Cmd; wait::Bool) at .\process.jl:440 │ [3] run(::Cmd) at .\process.jl:438 │ [4] top-level scope at C:\Users\Hello\.julia\packages\ADCME\94vEM\deps\build.jl:91 │ [5] include(::String) at .\client.jl:439 │ [6] top-level scope at none:5 │ in expression starting at C:\Users\Hello\.julia\packages\ADCME\94vEM\deps\build.jl:88 └ @ Pkg.Operations D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.4\Pkg\src\Operations.jl:899

I hope you can take the time to answer,thank you!

Link with ChainRules.jl

ChainRules.jl is a language-wide AD definition library. https://github.com/JuliaDiff/ChainRules.jl Plugging into it will give compatibility with a lot of operations for free. You might want to use this for generating calls for tensorflow, instead just redirecting back to Julia.

@oxinabox maintains both TensorFlow.jl and ChainRules.jl so he might know the specifics on how to do this.

error of building ADCME

许博士您好:

很抱歉打扰您, 当我使用ADCME时,出现了一些问题,错误提示如下所示:
julia> using ADCME
[ Info: Precompiling ADCME [07b341a0-ce75-57c6-b2de-414ffdc00be5]
ERROR: LoadError: ADCME is not properly built; run Pkg.build("ADCME") to fix the problem.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] top-level scope
@ C:\Users\Keting.julia\packages\ADCME\94vEM\src\ADCME.jl:46
[3] include
@ .\Base.jl:386 [inlined]
[4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
@ Base .\loading.jl:1235
[5] top-level scope
@ none:1
[6] eval
@ .\boot.jl:360 [inlined]
[7] eval(x::Expr)
@ Base.MainInclude .\client.jl:446
[8] top-level scope
@ none:1
in expression starting at C:\Users\Keting.julia\packages\ADCME\94vEM\src\ADCME.jl:3
ERROR: Failed to precompile ADCME [07b341a0-ce75-57c6-b2de-414ffdc00be5] to C:\Users\Keting.julia\compiled\v1.6\ADCME\jl_1362.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1385
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1329
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1043
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:936
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:923

当我键入 Pkg.build("ADCME")时,出现了如下错误:

julia> Pkg.build("ADCME")
Building Conda ─→ C:\Users\Keting.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\299304989a5e6473d985212c28928899c74e9421\build.log
Building PyCall → C:\Users\Keting.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\4ba3651d33ef76e24fef6a598b63ffd1c5e1cd17\build.log
Building CMake ─→ C:\Users\Keting.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\50a8b41d2c562fccd9ab841085fc7d1e2706da82\build.log
Building HDF5 ──→ C:\Users\Keting.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\698c099c6613d7b7f151832868728f426abe698b\build.log
Building ADCME ─→ C:\Users\Keting.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\4ecfc24dbdf551f92b5de7ea2d99da3f7fde73c9\build.log
ERROR: Error building ADCME:
ϵͳ�Ҳ���ָ�����ļ�
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Pkg.jl:570
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Pkg.jl:570
[ Info: Your Julia version is 1.6.3, current ADCME version is 0.7.3, ADCME dependencies installation path: C:\Users\Keting.julia\adcme
[ Info: --------------- (1/7) Install Tensorflow Dependencies ---------------
[ Info: ADCME dependencies have already been installed.
[ Info: --------------- (2/7) Check Python Version ---------------
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Pkg.jl:570
Building Conda ─→ C:\Users\Keting.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\299304989a5e6473d985212c28928899c74e9421\build.log
Building PyCall → C:\Users\Keting.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\4ba3651d33ef76e24fef6a598b63ffd1c5e1cd17\build.log
Precompiling project...
✗ ADCME
0 dependencies successfully precompiled in 2 seconds (42 already precompiled)
1 dependency errored. To see a full report either run import Pkg; Pkg.precompile() or load the package
┌ Info: PyCall Python version: C:\Users\Keting.julia\adcme\python.exe
└ Conda Python version: C:\Users\Keting.julia\adcme\python.exe
[ Info: --------------- (3/7) Looking for TensorFlow Dynamic Libraries ---------------
[ Info: --------------- (Windows) Downloading Include Files for Custom Operators ---------------
ERROR: LoadError: failed process: Process(cmd /c rmdir /s /q 'C:\Users\Keting.julia\adcme\lib\site-packages\tensorflow_core\include', ProcessExited(2)) [2]

Stacktrace:
[1] pipeline_error
@ .\process.jl:525 [inlined]
[2] run(::Cmd; wait::Bool)
@ Base .\process.jl:440
[3] run(::Cmd)
@ Base .\process.jl:438
[4] top-level scope
@ C:\Users\Keting.julia\packages\ADCME\94vEM\deps\build.jl:91
[5] include(fname::String)
@ Base.MainInclude .\client.jl:444
[6] top-level scope
@ none:5
in expression starting at C:\Users\Keting.julia\packages\ADCME\94vEM\deps\build.jl:88
Stacktrace:
[1] pkgerror(msg::String)
@ Pkg.Types C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Types.jl:55
[2] (::Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec})()
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1048
[3] withenv(::Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, ::Pair{String, String}, ::Vararg{Pair{String, B} where B, N} where N)
@ Base .\env.jl:161
[4] (::Pkg.Operations.var"#109#113"{String, Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec})()
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1546
[5] with_temp_env(fn::Pkg.Operations.var"#109#113"{String, Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec}, temp_env::String)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1448
[6] (::Pkg.Operations.var"#108#112"{Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String})(tmp::String)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1521
[7] mktempdir(fn::Pkg.Operations.var"#108#112"{Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String}, parent::String; prefix::String)
@ Base.Filesystem .\file.jl:729
[8] mktempdir(fn::Function, parent::String) (repeats 2 times)
@ Base.Filesystem .\file.jl:727
[9] sandbox(fn::Function, ctx::Pkg.Types.Context, target::Pkg.Types.PackageSpec, target_path::String, sandbox_path::String, sandbox_project_override::Pkg.Types.Project)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1487
[10] build_versions(ctx::Pkg.Types.Context, uuids::Vector{Base.UUID}; verbose::Bool)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1029
[11] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, verbose::Bool)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:910
[12] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; verbose::Bool, kwargs::Base.Iterators.Pairs{Symbol, Base.TTY, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.TTY}}})
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:900
[13] build(pkgs::Vector{Pkg.Types.PackageSpec}; io::Base.TTY, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:80
[14] build(pkgs::Vector{Pkg.Types.PackageSpec})
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:78
[15] #build#71
@ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:76 [inlined]
[16] build
@ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:76 [inlined]
[17] #build#70
@ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:75 [inlined]
[18] build(pkg::String)
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:75
[19] top-level scope
@ REPL[23]:1

我是在win10系统上运行的,系统环境变量也添加好了,您知道怎么解决这个问题吗?

期待您的回复,
祝好,
郭柯廷

Error when building Pkg on Julia 1.4

Hello! I am trying to install the package using Julia Version 1.4.2 (2020-05-23). (on mac)

Pkg.add("ADCME") ran succesfully but after trying to do using ADCME I get an error saying that I need to build the package:

julia> using ADCME
[ Info: Precompiling ADCME [07b341a0-ce75-57c6-b2de-414ffdc00be5]
ERROR: LoadError: ADCME is not properly built; run `Pkg.build("ADCME")` to fix the problem.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] top-level scope at /Users/rafaelorozco/.julia/packages/ADCME/XXrZo/src/ADCME.jl:44
 [3] include(::Module, ::String) at ./Base.jl:377
 [4] top-level scope at none:2
 [5] eval at ./boot.jl:331 [inlined]
 [6] eval(::Expr) at ./client.jl:449
 [7] top-level scope at ./none:3
in expression starting at /Users/rafaelorozco/.julia/packages/ADCME/XXrZo/src/ADCME.jl:32
ERROR: Failed to precompile ADCME [07b341a0-ce75-57c6-b2de-414ffdc00be5] to /Users/rafaelorozco/.julia/compiled/v1.4/ADCME/b8Ld2_gZGSU.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at ./loading.jl:1272
 [3] _require(::Base.PkgId) at ./loading.jl:1029
 [4] require(::Base.PkgId) at ./loading.jl:927
 [5] require(::Module, ::Symbol) at ./loading.jl:922

The error I get during building seems to be about a unzip tool that isnt found in the proper place. Could you help me with this?

julia> Pkg.build("ADCME")
   Building Conda ─→ `~/.julia/packages/Conda/x5ml4/deps/build.log`
   Building PyCall → `~/.julia/packages/PyCall/BcTLp/deps/build.log`
   Building CMake ─→ `~/.julia/packages/CMake/ULbyn/deps/build.log`
   Building HDF5 ──→ `~/.julia/packages/HDF5/T1b9x/deps/build.log`
   Building FFTW ──→ `~/.julia/packages/FFTW/DMUbN/deps/build.log`
   Building ADCME ─→ `~/.julia/packages/ADCME/XXrZo/deps/build.log`
┌ Error: Error building `ADCME`: 
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Pkg.jl:531
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Pkg.jl:531
│ [ Info: Your Julia version is 1.4.2, current ADCME version is 0.6.5, ADCME dependencies installation path: /Users/rafaelorozco/.julia/adcme
│ [ Info:  --------------- (1/6) Install Tensorflow Dependencies  --------------- 
│ [ Info: ADCME dependencies have already been installed.
│ [ Info:  --------------- (2/6) Check Python Version  --------------- 
│ ┌ Warning: Pkg.installed() is deprecated
│ └ @ Pkg /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Pkg.jl:531
│    Building Conda ─→ `~/.julia/packages/Conda/x5ml4/deps/build.log`
│    Building PyCall → `~/.julia/packages/PyCall/BcTLp/deps/build.log`
│ ┌ Info: PyCall Python version: /Users/rafaelorozco/.julia/adcme/bin/python
│ └ Conda Python version: /Users/rafaelorozco/.julia/adcme/bin/python
│ [ Info:  --------------- (3/6) Looking for TensorFlow Dynamic Libraries --------------- 
│ [ Info:  --------------- (4/6) Preparing Custom Operator Environment --------------- 
│ ERROR: LoadError: IOError: could not spawn `/Users/rafaelorozco/.julia/adcme/bin/unzip -qq /Users/rafaelorozco/.julia/adcme/lib/Libraries/eigen.zip -d /Users/rafaelorozco/.julia/adcme/lib/Libraries`: permission denied (EACCES)
│ Stacktrace:
│  [1] _spawn_primitive(::String, ::Cmd, ::Array{Any,1}) at ./process.jl:99
│  [2] #550 at ./process.jl:112 [inlined]
│  [3] setup_stdios(::Base.var"#550#551"{Cmd}, ::Array{Any,1}) at ./process.jl:196
│  [4] _spawn at ./process.jl:111 [inlined]
│  [5] run(::Cmd; wait::Bool) at ./process.jl:439
│  [6] run(::Cmd) at ./process.jl:438
│  [7] top-level scope at /Users/rafaelorozco/.julia/packages/ADCME/XXrZo/deps/build.jl:116
│  [8] include(::String) at ./client.jl:439
│  [9] top-level scope at none:5
│ in expression starting at /Users/rafaelorozco/.julia/packages/ADCME/XXrZo/deps/build.jl:108
└ @ Pkg.Operations /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.4/Pkg/src/Operations.jl:899

Thank you very much for your attention on this!

Complex SparseTensor

I tried to add to the code

function SparseTensor(I::Union{PyObject,Array{T,1}}, J::Union{PyObject,Array{T,1}}, 
      V::Union{Array{ComplexF64,1}, PyObject},
     m::Union{S, PyObject, Nothing}=nothing, n::Union{S, PyObject, Nothing}=nothing; is_diag::Bool=false) where {T<:Integer, S<:Integer}
    if isa(I, PyObject) && size(I,2)==2
        return SparseTensor_(I, J, V)
    end
    I, J, V = convert_to_tensor(I, dtype=Int64), convert_to_tensor(J, dtype=Int64), convert_to_tensor(V)
    m, n = convert_to_tensor(m, dtype=Int64), convert_to_tensor(n, dtype=Int64)
    indices = [I J] .- 1
    value = V
    shape = [m;n]
    sp = tf.SparseTensor(indices, value, shape)
    options.sparse.auto_reorder && (sp = tf.sparse.reorder(sp)) 
    SparseTensor(sp, is_diag)
end
sess = Session();
ii = [1;2;3;4]
jj = [1;2;3;4]
vv = [1.0;1.0;1.0;1.0] .-0.5im
rhs =collect(1:4.0)
s = SparseTensor(ii, jj, vv, 4, 4)
sol = s\rhs
run(sess, sol)
4-element Array{Float64,1}:
 1.0
 2.0
 3.0
 4.0

Correct answer

sparse(ii,jj,vv)\rhs
4-element Array{Complex{Float64},1}:
                0.8 + 0.4im
                1.6 + 0.8im
 2.4000000000000004 + 1.2000000000000002im
                3.2 + 1.6im

linux pthreads error when building operators

hello!
  when I trying to run the custom operators example , it occurs some errors as follows.

julia> ADCME.cmake()
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /home/node/.julia/adcme/bin/x86_64-conda_cos6-linux-gnu-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /home/node/.julia/adcme/bin/x86_64-conda_cos6-linux-gnu-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
JULIA=/home/node/Downloads/julia-1.6.3/bin/julia
Python path=/home/node/.julia/adcme/bin/python
PREFIXDIR=/home/node/.julia/adcme/lib/Libraries
TF_INC=/home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/include
TF_ABI=1
TF_LIB_FILE=/home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/libtensorflow_framework.so.1
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE

I noticed some unusual information in it

-- Looking for pthread_create in pthreads - not found

and I think it's the reason why I ended up with the error as follows

julia> include("gradtest.jl")
2022-03-10 21:59:38.942113: I tensorflow/core/platform/cpu_feature_guard.cc:145] This TensorFlow binary is optimized with Intel(R) MKL-DNN to use the following CPU instructions in performance critical operations:  SSE4.1 SSE4.2 AVX AVX2 FMA
To enable them in non-MKL-DNN operations, rebuild TensorFlow with the appropriate compiler flags.
2022-03-10 21:59:38.962708: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2899885000 Hz
2022-03-10 21:59:38.963263: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x3b8b0f0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2022-03-10 21:59:38.963284: I tensorflow/compiler/xla/service/service.cc:176]   StreamExecutor device (0): Host, Default Version
OMP: Info #212: KMP_AFFINITY: decoding x2APIC ids.
OMP: Info #210: KMP_AFFINITY: Affinity capable, using global cpuid leaf 11 info
OMP: Info #154: KMP_AFFINITY: Initial OS proc set respected: 0-15
OMP: Info #156: KMP_AFFINITY: 16 available OS procs
OMP: Info #157: KMP_AFFINITY: Uniform topology
OMP: Info #179: KMP_AFFINITY: 1 packages x 8 cores/pkg x 2 threads/core (8 total cores)
OMP: Info #214: KMP_AFFINITY: OS proc to physical thread map:
OMP: Info #171: KMP_AFFINITY: OS proc 0 maps to package 0 core 0 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 8 maps to package 0 core 0 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 1 maps to package 0 core 1 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 9 maps to package 0 core 1 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 2 maps to package 0 core 2 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 10 maps to package 0 core 2 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 3 maps to package 0 core 3 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 11 maps to package 0 core 3 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 4 maps to package 0 core 4 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 12 maps to package 0 core 4 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 5 maps to package 0 core 5 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 13 maps to package 0 core 5 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 6 maps to package 0 core 6 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 14 maps to package 0 core 6 thread 1 
OMP: Info #171: KMP_AFFINITY: OS proc 7 maps to package 0 core 7 thread 0 
OMP: Info #171: KMP_AFFINITY: OS proc 15 maps to package 0 core 7 thread 1 
OMP: Info #250: KMP_AFFINITY: pid 7771 tid 7771 thread 0 bound to OS proc set 0
2022-03-10 21:59:38.964066: I tensorflow/core/common_runtime/process_util.cc:115] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
2022-03-10 21:59:38.986784: F tensorflow/core/framework/tensor_shape.cc:324] Check failed: size >= 0 (-1 vs. 0)

signal (6): Aborted
in expression starting at /data/liufeng/project/007_inversion/ADCME_test/test_custom/gradtest.jl:19
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_ZN10tensorflow8internal15LogMessageFatalD1Ev at /home/node/.julia/adcme/lib/python3.7/site-packages/tensorflow_core/python/_pywrap_tensorflow_internal.so (unknown line)

I searched on google for various solutions but all failed. If you know how to solve this problem, please do not hesitate to advise me!

Error :No dynamic library found

When testing the ADCME,there is a warning that it can't load (C:\Users\27632.julia\packages\ADCME\PJIHk\deps\CustomOps\build\adcme.dll)
but there is no such a file named “adcme.dll",and then the test is broken?
But the ADCME can be used with the sample code, also ,the warning always show

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

The syntax of RBF3D using multiquadric radial?

I would like to know how to implement rbf function on the following datasets? I know from the tutorials that there is RBF2D but i couldn't find tutorials for 3D radial using multiquadric radial.
For example, I have the following dataset where I want to build rbf for training data and predict the values for testing data.

#training data
x = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] 
y = [1.0, 3.0, 4.0, 4.0, 4.0, 4.0, 5.0, 5.0] 
z = [13.41, 8.6, 5.76, 3.58, 4.69, 3.72, 6.32, 5.68]

#testing data (for which z to be predicted)
x = [1.0, 1.0, 2.28, 2.28, 3.57, 3.57, 4.85, 6.14, 6.14, 6.14, 6.14, 7.42, 7.42, 8.71, 8.71, 10.0] 
y = [1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 5.0, 5.0, 6.0]

May I know, is this supported by the package? And how can i achieve this operation?

Sparse array and sparse solver in AD

Hi, do you know any AD tool supporting sparse array? I just did a simple demo for FEM with Google/JAX, which has the same backend as Tensorflow. The problem is, without sparse array for global stiffness, dense solvers are so slow that only toy problem can be solved. A linear problem with 10k elements takes almost two minutes to solve, while it takes less than 1 second with numpy.

Tensorflow does support sparse tensor, but its linear solver that not support it. There is an issue saying they are working on it, though.

Unable to initialize a session with init(sess)

Hi,

I just installed ADCME and Julia v1.3 on my MacOS High Sierra, and I am able to run the test case with 10 random numbers up to the point of initializing a session with the "init(sess)" command. It fails with the error message below:

ERROR: MethodError: no method matching run(::PyCall.PyObject, ::Nothing)
Closest candidates are:
run(::PyCall.PyObject, ::ADCME.NRResult) at /Users/folorode/.julia/packages/ADCME/XXrZo/src/optim.jl:286
run(::PyCall.PyObject, ::mpi_SparseTensor) at /Users/folorode/.julia/packages/ADCME/XXrZo/src/mpi.jl:498
run(::Base.AbstractCmd, ::Any...; wait) at process.jl:438
...
Stacktrace:
[1] init(::PyCall.PyObject) at /Users/folorode/.julia/packages/ADCME/XXrZo/src/run.jl:48
[2] top-level scope at REPL[28]:1

error about using ADCME with julia 1.6

许博士您好:

很抱歉打扰您,我是**石油大学(华东)的一名研究生,我叫郭柯廷, 我对您的ADCME库非常感兴趣,但是,当我使用这个库的时候,出现了一些问题,错误提示如下所示:
julia> using ADCME
[ Info: Precompiling ADCME [07b341a0-ce75-57c6-b2de-414ffdc00be5]
ERROR: LoadError: ADCME is not properly built; run Pkg.build("ADCME") to fix the problem.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] top-level scope
@ C:\Users\Keting.julia\packages\ADCME\94vEM\src\ADCME.jl:46
[3] include
@ .\Base.jl:386 [inlined]
[4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
@ Base .\loading.jl:1235
[5] top-level scope
@ none:1
[6] eval
@ .\boot.jl:360 [inlined]
[7] eval(x::Expr)
@ Base.MainInclude .\client.jl:446
[8] top-level scope
@ none:1
in expression starting at C:\Users\Keting.julia\packages\ADCME\94vEM\src\ADCME.jl:3
ERROR: Failed to precompile ADCME [07b341a0-ce75-57c6-b2de-414ffdc00be5] to C:\Users\Keting.julia\compiled\v1.6\ADCME\jl_1362.tmp.
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:33
[2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY, ignore_loaded_modules::Bool)
@ Base .\loading.jl:1385
[3] compilecache(pkg::Base.PkgId, path::String)
@ Base .\loading.jl:1329
[4] _require(pkg::Base.PkgId)
@ Base .\loading.jl:1043
[5] require(uuidkey::Base.PkgId)
@ Base .\loading.jl:936
[6] require(into::Module, mod::Symbol)
@ Base .\loading.jl:923

当我键入 Pkg.build("ADCME")时,出现了如下错误:

julia> Pkg.build("ADCME")
Building Conda ─→ C:\Users\Keting\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\299304989a5e6473d985212c28928899c74e9421\build.log
Building PyCall → C:\Users\Keting\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\4ba3651d33ef76e24fef6a598b63ffd1c5e1cd17\build.log
Building CMake ─→ C:\Users\Keting\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\50a8b41d2c562fccd9ab841085fc7d1e2706da82\build.log
Building HDF5 ──→ C:\Users\Keting\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\698c099c6613d7b7f151832868728f426abe698b\build.log
Building ADCME ─→ C:\Users\Keting\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\4ecfc24dbdf551f92b5de7ea2d99da3f7fde73c9\build.log
ERROR: Error building ADCME:
ϵͳ�Ҳ���ָ�����ļ�
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Pkg.jl:570
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Pkg.jl:570
[ Info: Your Julia version is 1.6.3, current ADCME version is 0.7.3, ADCME dependencies installation path: C:\Users\Keting.julia\adcme
[ Info: --------------- (1/7) Install Tensorflow Dependencies ---------------
[ Info: ADCME dependencies have already been installed.
[ Info: --------------- (2/7) Check Python Version ---------------
┌ Warning: Pkg.installed() is deprecated
└ @ Pkg C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Pkg.jl:570
Building Conda ─→ C:\Users\Keting\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\299304989a5e6473d985212c28928899c74e9421\build.log
Building PyCall → C:\Users\Keting\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\4ba3651d33ef76e24fef6a598b63ffd1c5e1cd17\build.log
Precompiling project...
✗ ADCME
0 dependencies successfully precompiled in 2 seconds (42 already precompiled)
1 dependency errored. To see a full report either run import Pkg; Pkg.precompile() or load the package
┌ Info: PyCall Python version: C:\Users\Keting.julia\adcme\python.exe
└ Conda Python version: C:\Users\Keting.julia\adcme\python.exe
[ Info: --------------- (3/7) Looking for TensorFlow Dynamic Libraries ---------------
[ Info: --------------- (Windows) Downloading Include Files for Custom Operators ---------------
ERROR: LoadError: failed process: Process(cmd /c rmdir /s /q 'C:\Users\Keting\.julia\adcme\lib\site-packages\tensorflow_core\include', ProcessExited(2)) [2]

Stacktrace:
[1] pipeline_error
@ .\process.jl:525 [inlined]
[2] run(::Cmd; wait::Bool)
@ Base .\process.jl:440
[3] run(::Cmd)
@ Base .\process.jl:438
[4] top-level scope
@ C:\Users\Keting.julia\packages\ADCME\94vEM\deps\build.jl:91
[5] include(fname::String)
@ Base.MainInclude .\client.jl:444
[6] top-level scope
@ none:5
in expression starting at C:\Users\Keting.julia\packages\ADCME\94vEM\deps\build.jl:88
Stacktrace:
[1] pkgerror(msg::String)
@ Pkg.Types C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Types.jl:55
[2] (::Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec})()
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1048
[3] withenv(::Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, ::Pair{String, String}, ::Vararg{Pair{String, B} where B, N} where N)
@ Base .\env.jl:161
[4] (::Pkg.Operations.var"#109#113"{String, Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec})()
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1546
[5] with_temp_env(fn::Pkg.Operations.var"#109#113"{String, Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.PackageSpec}, temp_env::String)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1448
[6] (::Pkg.Operations.var"#108#112"{Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String})(tmp::String)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1521
[7] mktempdir(fn::Pkg.Operations.var"#108#112"{Pkg.Operations.var"#82#87"{Bool, Pkg.Types.Context, String, Pkg.Types.PackageSpec}, Pkg.Types.Context, Pkg.Types.PackageSpec, String, Pkg.Types.Project, String}, parent::String; prefix::String)
@ Base.Filesystem .\file.jl:729
[8] mktempdir(fn::Function, parent::String) (repeats 2 times)
@ Base.Filesystem .\file.jl:727
[9] sandbox(fn::Function, ctx::Pkg.Types.Context, target::Pkg.Types.PackageSpec, target_path::String, sandbox_path::String, sandbox_project_override::Pkg.Types.Project)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1487
[10] build_versions(ctx::Pkg.Types.Context, uuids::Vector{Base.UUID}; verbose::Bool)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:1029
[11] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}, verbose::Bool)
@ Pkg.Operations C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\Operations.jl:910
[12] build(ctx::Pkg.Types.Context, pkgs::Vector{Pkg.Types.PackageSpec}; verbose::Bool, kwargs::Base.Iterators.Pairs{Symbol, Base.TTY, Tuple{Symbol}, NamedTuple{(:io,), Tuple{Base.TTY}}})
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:900
[13] build(pkgs::Vector{Pkg.Types.PackageSpec}; io::Base.TTY, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:80
[14] build(pkgs::Vector{Pkg.Types.PackageSpec})
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:78
[15] #build#71
@ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:76 [inlined]
[16] build
@ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:76 [inlined]
[17] #build#70
@ C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:75 [inlined]
[18] build(pkg::String)
@ Pkg.API C:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.6\Pkg\src\API.jl:75
[19] top-level scope
@ REPL[23]:1

我是在win10系统上运行的,系统环境变量也添加好了,您知道怎么解决这个问题吗?

期待您的回复,
祝好,
郭柯廷

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.