Files
PINA/pina/problem/inverse_problem.py
Filippo Olivo 4177bfbb50 Fix Codacy Warnings (#477)
---------

Co-authored-by: Dario Coscia <dariocos99@gmail.com>
2025-03-19 17:48:18 +01:00

56 lines
1.5 KiB
Python

"""Module for the ParametricProblem class"""
from abc import abstractmethod
import torch
from .abstract_problem import AbstractProblem
class InverseProblem(AbstractProblem):
"""
The class for the definition of inverse problems, i.e., problems
with unknown parameters that have to be learned during the training process
from given data.
Here's an example of a spatial inverse ODE problem, i.e., a spatial
ODE problem with an unknown parameter `alpha` as coefficient of the
derivative term.
:Example:
TODO
"""
def __init__(self):
super().__init__()
# storing unknown_parameters for optimization
self.unknown_parameters = {}
for var in self.unknown_variables:
range_var = self.unknown_parameter_domain.range_[var]
tensor_var = (
torch.rand(1, requires_grad=True) * range_var[1] + range_var[0]
)
self.unknown_parameters[var] = torch.nn.Parameter(tensor_var)
@abstractmethod
def unknown_parameter_domain(self):
"""
The parameters' domain of the problem.
"""
@property
def unknown_variables(self):
"""
The parameters of the problem.
"""
return self.unknown_parameter_domain.variables
@property
def unknown_parameters(self):
"""
The parameters of the problem.
"""
return self.__unknown_parameters
@unknown_parameters.setter
def unknown_parameters(self, value):
self.__unknown_parameters = value