1: #pragma once
3: #include <petscregressor.h>
4: #include <petsc/private/petscimpl.h>
6: PETSC_EXTERN PetscBool PetscRegressorRegisterAllCalled;
7: PETSC_EXTERN PetscErrorCode PetscRegressorRegisterAll(void);
9: typedef struct _PetscRegressorOps *PetscRegressorOps;
11: struct _PetscRegressorOps {
12: PetscErrorCode (*setup)(PetscRegressor);
13: PetscErrorCode (*setfromoptions)(PetscRegressor, PetscOptionItems); /* sets options from database */
14: PetscErrorCode (*settraining)(PetscRegressor, Mat, Vec); /* set the training data matrix and targets */
15: PetscErrorCode (*fit)(PetscRegressor); /* compute the transformation to be applied */
16: PetscErrorCode (*predict)(PetscRegressor, Mat, Vec); /* predict using fitted model */
17: PetscErrorCode (*destroy)(PetscRegressor);
18: PetscErrorCode (*reset)(PetscRegressor);
19: PetscErrorCode (*view)(PetscRegressor, PetscViewer);
20: };
22: /* Define the PetscRegressor data structure. */
23: struct _p_PetscRegressor {
24: PETSCHEADER(struct _PetscRegressorOps);
26: PetscBool setupcalled; /* True if setup has been called */
27: PetscBool fitcalled; /* True if the Fit() method has been called. */
28: void *data; /* Implementation-specific data */
29: Mat training; /* Matrix holding the training data set */
30: Vec target; /* Targets for training data (response variables or labels) */
31: Tao tao; /* Tao optimizer used by many regressor implementations */
32: PetscObjectParameterDeclare(PetscReal, regularizer_weight);
33: };
35: PETSC_EXTERN PetscLogEvent PetscRegressor_SetUp;
36: PETSC_EXTERN PetscLogEvent PetscRegressor_Fit;
37: PETSC_EXTERN PetscLogEvent PetscRegressor_Predict;