Source code for pina._src.problem.zoo.supervised_problem

"""Formulation of a Supervised Problem in PINA."""

from pina._src.problem.base_problem import BaseProblem
from pina._src.condition.condition import Condition


[docs] class SupervisedProblem(BaseProblem): """ Definition of a supervised-learning problem. This class provides a simple way to define a supervised problem using the :class:`~pina.condition.input_target_condition.InputTargetCondition`. :Example: >>> import torch >>> input_data = torch.rand((100, 10)) >>> output_data = torch.rand((100, 10)) >>> problem = SupervisedProblem(input_data, output_data) """ # TODO: This is necessary to override the abstract properties of # BaseProblem, but it is not an ideal solution. We should consider # a different desgin to manage input and output variables. conditions = {} output_variables = None input_variables = None def __init__( self, input_, output_, input_variables=None, output_variables=None ): """ Initialization of the :class:`SupervisedProblem` class. :param input_: Input data of the problem. :type input_: torch.Tensor | LabelTensor | Graph | Data :param output_: Output data of the problem. :type output_: torch.Tensor | LabelTensor | Graph | Data :param list[str] input_variables: List of names of the input variables. If None, the input variables are inferred from `input_`. Default is ``None``. :param list[str] output_variables: List of names of the output variables. If None, the output variables are inferred from `output_`. Default is ``None``. """ # Set input and output variables self.input_variables = input_variables self.output_variables = output_variables # Set the condition self.conditions["data"] = Condition(input=input_, target=output_) super().__init__()