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;