16 params.
addParam<std::vector<UserObjectName>>(
17 "covariance_functions", {},
"Covariance functions that this covariance function depends on.");
19 "num_outputs", 1,
"The number of outputs expected for this covariance function.");
29 _num_outputs(getParam<unsigned
int>(
"num_outputs")),
30 _dependent_covariance_names(getParam<
std::vector<UserObjectName>>(
"covariance_functions"))
47 mooseError(
"Hyperparameter tuning not set up for this covariance function. Please define " 48 "computedKdhyper() to compute gradient.");
54 const bool is_tunable)
56 const auto prefixed_name =
_name +
":" +
name;
62 const std::vector<Real> &
64 const std::vector<Real> value,
65 const bool is_tunable)
67 const auto prefixed_name =
_name +
":" +
name;
78 if (dependent_covar->isTunable(
name))
85 mooseError(
"We found hyperparameter ",
name,
" but it was not declared tunable!");
92 const std::unordered_map<std::string, Real> & map,
93 const std::unordered_map<std::string, std::vector<Real>> & vec_map)
97 dependent_covar->loadHyperParamMap(map, vec_map);
102 const auto & map_iter = map.find(iter.first);
103 if (map_iter != map.end())
104 iter.second = map_iter->second;
108 const auto & map_iter = vec_map.find(iter.first);
109 if (map_iter != vec_map.end())
110 iter.second = map_iter->second;
116 std::unordered_map<std::string, Real> & map,
117 std::unordered_map<std::string, std::vector<Real>> & vec_map)
const 121 dependent_covar->buildHyperParamMap(map, vec_map);
125 map[iter.first] = iter.second;
127 vec_map[iter.first] = iter.second;
138 if (dependent_covar->getTuningData(
name, size,
min,
max))
152 size = vector_value->second.size();
164 std::map<UserObjectName, std::string> & name_type_map)
const 168 dependent_covar->dependentCovarianceTypes(name_type_map);
169 name_type_map.insert(std::make_pair(dependent_covar->name(), dependent_covar->type()));
std::unordered_map< std::string, Real > _hp_map_real
Map of real-valued hyperparameters.
void loadHyperParamMap(const std::unordered_map< std::string, Real > &map, const std::unordered_map< std::string, std::vector< Real >> &vec_map)
Load some hyperparameters into the local maps contained in this object.
std::vector< std::string > _dependent_covariance_types
The types of the dependent covariance functions.
std::unordered_set< std::string > _tunable_hp
list of tunable hyper-parameters
std::vector< CovarianceFunctionBase * > _covariance_functions
Vector of pointers to the dependent covariance functions.
static InputParameters validParams()
CovarianceFunctionBase(const InputParameters ¶meters)
const std::vector< Real > & addVectorRealHyperParameter(const std::string &name, const std::vector< Real > value, const bool is_tunable)
Register a vector hyperparameter to this covariance function.
virtual const std::string & name() const
auto max(const L &left, const R &right)
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
void buildHyperParamMap(std::unordered_map< std::string, Real > &map, std::unordered_map< std::string, std::vector< Real >> &vec_map) const
Populates the input maps with the owned hyperparameters.
Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic > RealEigenMatrix
void dependentCovarianceTypes(std::map< UserObjectName, std::string > &name_type_map) const
Populate a map with the names and types of the dependent covariance functions.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::unordered_map< std::string, std::vector< Real > > _hp_map_vector_real
Map of vector-valued hyperparameters.
const std::vector< UserObjectName > _dependent_covariance_names
The names of the dependent covariance functions.
void mooseError(Args &&... args) const
static InputParameters validParams()
const Real & addRealHyperParameter(const std::string &name, const Real value, const bool is_tunable)
Register a scalar hyperparameter to this covariance function.
auto min(const L &left, const R &right)
virtual bool computedKdhyper(RealEigenMatrix &dKdhp, const RealEigenMatrix &x, const std::string &hyper_param_name, unsigned int ind) const
Redirect dK/dhp for hyperparameter "hp".
void ErrorVector unsigned int
virtual bool getTuningData(const std::string &name, unsigned int &size, Real &min, Real &max) const
Get the default minimum and maximum and size of a hyperparameter.
virtual bool isTunable(const std::string &name) const
Check if a given parameter is tunable.
CovarianceFunctionBase * getCovarianceFunctionByName(const UserObjectName &name) const
Lookup a CovarianceFunction object by name and return pointer.