lululxvi / deepxde

A library for scientific machine learning and physics-informed learning
https://deepxde.readthedocs.io
GNU Lesser General Public License v2.1
2.77k stars 760 forks source link

Errors running provided examples #655

Open mattragoza opened 2 years ago

mattragoza commented 2 years ago

Hello, this looks like a really cool library that I would love to use in my research. However, I am not able to run the provided example code using either the PyTorch or JAX backend. Specifically, here are the errors I run into with examples/pinn_forward/ode_system.py:

For PyTorch backend:

Traceback (most recent call last):
  File "/ocean/projects/asc170022p/mtragoza/deepxde/examples/pinn_forward/ode_system.py", line 30, in <module>
    ic1 = dde.icbc.IC(geom, np.sin, boundary, component=0)
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/icbc/initial_conditions.py", line 17, in __init__
    self.func = npfunc_range_autocache(utils.return_tensor(func))
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/icbc/boundary_conditions.py", line 245, in npfunc_range_autocache
    if utils.get_num_args(func) == 1:
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/utils/internal.py", line 171, in get_num_args
    sig = inspect.signature(func)
  File "/ocean/projects/asc170022p/mtragoza/.conda/envs/MRE-XDE/lib/python3.10/inspect.py", line 3247, in signature
    return Signature.from_callable(obj, follow_wrapped=follow_wrapped,
  File "/ocean/projects/asc170022p/mtragoza/.conda/envs/MRE-XDE/lib/python3.10/inspect.py", line 2995, in from_callable
    return _signature_from_callable(obj, sigcls=cls,
  File "/ocean/projects/asc170022p/mtragoza/.conda/envs/MRE-XDE/lib/python3.10/inspect.py", line 2558, in _signature_from_callable
    raise ValueError('callable {!r} is not supported by signature'.format(obj))
ValueError: callable <ufunc 'sin'> is not supported by signature

And for JAX backend:

Traceback (most recent call last):
  File "/ocean/projects/asc170022p/mtragoza/deepxde/examples/pinn_forward/ode_system.py", line 41, in <module>
    losshistory, train_state = model.train(epochs=20000)
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/utils/internal.py", line 22, in wrapper
    result = f(*args, **kwargs)
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/model.py", line 427, in train
    self._test()
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/model.py", line 559, in _test
    ) = self._outputs_losses(
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/model.py", line 360, in _outputs_losses
    outs = self.outputs_losses(training, inputs, targets)
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/model.py", line 318, in outputs_losses
    _outputs, _losses = inner_outputs_losses(
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/model.py", line 294, in inner_outputs_losses
    losses = self.data.losses(targets, _outputs, loss_fn, self, aux=None)
  File "/ocean/projects/asc170022p/mtragoza/deepxde/deepxde/data/pde.py", line 130, in losses
    f = self.pde(model.net.inputs, outputs)
AttributeError: "FNN" object has no attribute "inputs"

I think the JAX error is due to incomplete support for the JAX backend, in which case I would love to know how to contribute and what the estimated amount of effort/complexity it would be to fully support JAX.

As for the PyTorch error, I don't think I understand enough about this library to debug the problem. Could you provide any pointers?

Thank you.

lululxvi commented 2 years ago
mattragoza commented 2 years ago

Thank you for the quick response. You are correct- I cloned the master branch of the git repo instead of using pip or conda. After pulling your recent changes, I was able to get a few examples to work using PyTorch.

However, it seems that there are some features missing in the PyTorch backend as well, for instance the inverse Poisson problem example uses PFNN (parallel networks) which is only implemented in the tensorflow v1 backend. I would love to contribute a PyTorch implementation as a first contribution.

mattragoza commented 2 years ago

I have opened a pull request #667 with a pytorch implementation of PFNN that allows running the inverse Poisson problem and time-independent reaction-diffusion examples using the pytorch backend.