continuiti icon indicating copy to clipboard operation
continuiti copied to clipboard

FunctionSet should support more functionality to easily sample parameterised functions

Open samuelburbulla opened this issue 10 months ago • 0 comments

Currently, we have sth. like

num_functions = 100
degree = 3

space = FunctionSet(lambda a: lambda x: 
     sum(a[i] * x**i for i in range(degree + 1))
 )
coeffs = torch.randn(degree + 1, num_functions)
poly = space(coeffs)                                                 
u = torch.stack([p(x) for p in poly])

In DeepXDE, the same code is:

space = dde.data.PowerSeries(N=degree + 1)
coeffs = space.random(num_functions)
u = space.eval_batch(coeffs, x)

We should introduce the following functionality:

  • [ ] poly = space.random(num_functions) which returns an object that contains the list of functions, but can also be evaluated as follows
  • [ ] u = poly(x) which returns the same as the eval_batch in DeepXDE

Maybe it makes sense to rename FunctionSet to FunctionSpace then (as in DeepXDE) that holds the mathematical description of the parametric function space, and use the name FunctionSet for the object that holds the list of functions already evaluated at a set of coefficients.

samuelburbulla avatar Apr 19 '24 11:04 samuelburbulla