class gpr::StudentTProcessRegression¶
Overview¶
#include <StudentTProcessRegression.h>
class StudentTProcessRegression: public gpr::GaussianProcessRegression {
public:
// construction
StudentTProcessRegression();
~StudentTProcessRegression();
// methods
void setHyperpriorParameters(double a, double b);
double getHyperpriorA() const;
double getHyperpriorB() const;
double getTPPrefactor() const;
virtual void calculateVariance(Observation& image1);
};
Inherited Members¶
public:
// structs
struct LaplacePosteriorFactor;
struct LaplacePosteriorSignature;
struct LaplacePosteriorStamp;
struct LaplacePosteriorState;
struct LaplaceTrainingCovarianceGeometry;
struct SliceLaplaceState;
struct farthest_point_sampling_t;
// fields
bool failedOptimizer;
std::unique_ptr<SexpatCF> sexpat_cov_func;
// methods
void initialize(const InputParameters& parameters, const AtomsConfiguration& conf_info);
void setHyperparameters(const Observation& all_obs, const AtomsConfiguration& conf_info, const bool update_sexpat_cf_param = true, const bool update_const_cf_param = true, const bool update_sqrt_prior_param = true);
void setUpDefault();
void evaluateTrainingCovarianceMatrix(const EigenMatrix& x, const Eigen::VectorXd& x_ind, EigenMatrix& cov_matrix, bool serial_per_rank = false);
void evaluateCovarianceMatrix(const EigenMatrix& x1, const EigenMatrix& x2, const Eigen::VectorXd& x1_ind, const Eigen::VectorXd& x2_ind, EigenMatrix& C, bool serial_per_rank = false) const;
void extractUniqueIndices(const Eigen::VectorXd& input_ind, Eigen::VectorXd& output_ind) const;
void evaluateEnergyAndGradient(const Eigen::VectorXd& w, const EigenMatrix& x, const Eigen::VectorXd& x_ind, const Eigen::VectorXd& y, EnergyAndGradient& energy_and_gradient);
void optimize(const Observation& observation);
void optimizeFactorized(const Observation& observation);
void calculatePotential(Observation& image1);
void calculatePotentialLaplace(Observation& image1);
void calculatePotentialLaplaceSlice(Observation& image1);
void calculateVarianceLaplaceSlice(Observation& image1);
void setUncertaintyMode(UncertaintyMode mode);
UncertaintyMode getUncertaintyMode() const;
void setUsePsisLaplace(bool use);
bool getUsePsisLaplace() const;
void setUsePsisDeterministicGrid(bool use);
bool getUsePsisDeterministicGrid() const;
void setUseDeltaMethod(bool use);
bool getUseDeltaMethod() const;
void buildRFFModel(const Observation& training_data, int D_rff);
void calculatePotentialRFF(Observation& image);
void calculateVarianceRFF(Observation& image);
int getRFFFeatures() const;
bool isRFFBuilt() const;
void setRFFFeaturesRequested(int D_rff);
int getRFFFeaturesRequested() const;
void setHyperparameterOptimizationMode(HyperparameterOptimizationMode mode);
HyperparameterOptimizationMode getHyperparameterOptimizationMode() const;
void setScgMaxIterationsForTesting(Index_t max_iter);
void resetLaplacePosteriorSignatureBuildsForTesting() const;
std::size_t laplacePosteriorSignatureBuildsForTesting() const;
void setForceFactorOwnerLaplaceMeanForTesting(bool value);
void resetLaplaceMeanBlockPartitionCallsForTesting() const;
std::size_t laplaceMeanBlockPartitionCallsForTesting() const;
void calculatePotentialDispatched(Observation& image1);
void calculateVarianceLaplace(Observation& image1);
void calculateVarianceDispatched(Observation& image1);
bool hasBeenOptimized() const;
void setJitterSigma2(const Index_t value);
void setParameters(const GPRSetup& parameters);
LikGaussian& getLikGaussian();
const LikGaussian& getLikGaussian() const;
SexpatCF& getSexpAtCovarianceFunction();
const SexpatCF& getSexpAtCovarianceFunction() const;
ConstantCF& getConstantCovarianceFunction();
const ConstantCF& getConstantCovarianceFunction() const;
Index_t getNumberOfPotentialCalls() const;
const EigenMatrix& getL() const;
const Eigen::VectorXd& getAlpha() const;
const EigenMatrix& getRMatrix() const;
const Eigen::VectorXd& getRIndices() const;
bool hasTrainingPermutation() const;
void assembleDirectionalCovarianceDerivatives(const EigenMatrix& x, const Eigen::VectorXd& ind_Ddim, const Eigen::VectorXd& uDdim, const Eigen::VectorXd& direction, EigenMatrix& first, EigenMatrix& second, bool serial_per_rank = false) const;
void extractCoordinatesByIndex(const EigenMatrix& x, const Eigen::VectorXd& ind_Ddim, const Index_t ind, FieldMatrixd& x_loc) const;
void assignBlockToMatrix(const Eigen::VectorXd& ind_Ddim1, const Eigen::VectorXd& ind_Ddim2, const Index_t row_val, const Index_t col_val, const FieldMatrixd& field, EigenMatrix& matrix, bool transpose_field = false) const;
void accumulateBlockContribution(const Eigen::VectorXd& ind_Ddim1, const Eigen::VectorXd& ind_Ddim2, const Index_t row_val, const Index_t col_val, const FieldMatrixd& field, const EigenMatrix& invC, const Eigen::VectorXd& b, double& trace_accum, double& quad_accum, bool transpose_field = false);
void removeColumn(const Index_t column_ind, EigenMatrix& matrix);
Index_t getNumberOfRepetitiveIndices(const Eigen::VectorXd& ind_Ddim) const;
virtual void calculateVariance(Observation& image1);
virtual void refreshVariancePrefactor(const Eigen::VectorXd&);
virtual double localVariancePrefactor(const Eigen::VectorXd&, const Eigen::VectorXd&) const;
virtual double localVariancePrefactorFromQuadratic(const Eigen::VectorXd&, double) const;
bool evaluateDirectionalCurvature(const Eigen::VectorXd& x_ind, const EigenMatrix& x, const Eigen::VectorXd& y, const Eigen::VectorXd& direction, double& curvature);
bool assembleExactHessian(const Eigen::VectorXd& x_ind, const EigenMatrix& x, const Eigen::VectorXd& y, int n_hyperparameters, Eigen::MatrixXd& H);
bool assembleExactHessianLocalDense(const Eigen::VectorXd& x_ind, const EigenMatrix& x, const Eigen::VectorXd& y, int n_hyperparameters, Eigen::MatrixXd& H);
void updateModelWithFullData(const Observation& full_observation);
void updateConfiguration(const AtomsConfiguration& conf_info);
const AtomsConfiguration& getAtomsConfig() const;
void calculatePotentialSVGD(Observation& image1);
void calculateVarianceSVGD(Observation& image1);
void calculatePotentialBMA(Observation& image1);
void calculateVarianceBMA(Observation& image1);
void evaluateEnergyAndGradientLocal(const Eigen::VectorXd& w, const EigenMatrix& x, const Eigen::VectorXd& x_ind, const Eigen::VectorXd& y, EnergyAndGradient& energy_and_gradient);
void setSVGDConfig(const laplace::SteinVariationalConfig& cfg);
const laplace::SteinVariationalConfig& getSVGDConfig() const;
Detailed Documentation¶
Methods¶
void setHyperpriorParameters(double a, double b)
Set the inverse-gamma hyperprior parameters.
Small values (1e-20) approximate a non-informative (flat) prior, reducing the TP to GP behavior.
Parameters:
a |
Shape parameter (alpha) |
b |
Scale parameter (beta) |
double getTPPrefactor() const
TP prefactor (signal variance estimate from hyperprior).
Valid after training. Used to scale prediction variance.
virtual void calculateVariance(Observation& image1)
Compute predictive variance for energy and gradient. Corresponds to MATLAB get_variance.m.