10 #ifdef MOOSE_LIBTORCH_ENABLED 26 exportHyperParameter(
const torch::Tensor & tensor)
28 const auto flattened = tensor.reshape({-1}).contiguous();
29 return {flattened.data_ptr<
Real>(), flattened.data_ptr<Real>() + flattened.numel()};
34 const std::string & param_name,
35 const torch::Tensor & tensor)
40 mooseError(
"Expected scalar hyperparameter for ", param_name,
".");
41 params.
set<
Real>(param_name) = tensor.item<Real>();
46 mooseError(
"Expected scalar hyperparameter for ", param_name,
".");
47 params.
set<
unsigned int>(param_name) = cast_int<unsigned int>(tensor.item<Real>());
52 mooseError(
"Expected vector hyperparameter for ", param_name,
".");
53 params.
set<std::vector<Real>>(param_name) = exportHyperParameter(tensor);
56 mooseError(
"Unsupported hyperparameter type for ", param_name,
".");
61 const UserObjectName & object_name,
62 const std::string & param_name,
63 const HyperParameterMap & hyperparameters)
65 const auto expected_name = std::string(object_name) +
":" + param_name;
66 const auto hyperparam_it = hyperparameters.find(expected_name);
67 if (hyperparam_it != hyperparameters.end())
68 assignRequiredHyperParameter(params, param_name, hyperparam_it->second);
77 params.
addClassDescription(
"Calls load method on SurrogateModel objects contained within the " 78 "`[Surrogates]` input block, if a filename is given.");
89 std::vector<SurrogateModel *> objects;
91 for (
auto model_ptr : objects)
94 if (gp_gen && model_ptr->isParamValid(
"filename"))
104 const std::string & covar_type =
model.getGP().getCovarType();
105 const std::string & covar_name =
model.getGP().getCovarName();
106 const std::map<UserObjectName, std::string> & dep_covar_types =
107 model.getGP().getDependentCovarTypes();
108 const std::vector<UserObjectName> & dep_covar_names =
model.getGP().getDependentCovarNames();
112 const unsigned int num_outputs =
model.getGP().getCovarNumOutputs();
113 const HyperParameterMap & hyperparameters =
model.getGP().getHyperParamMap();
119 for (
const auto & it : dep_covar_types)
121 const auto &
name = it.first;
122 const auto &
type = it.second;
129 for (
const auto & param : param_list)
131 loadRequiredHyperParameter(covar_params,
name, param, hyperparameters);
137 covar_params.
set<
unsigned int>(
"num_outputs") = num_outputs;
138 covar_params.
set<std::vector<UserObjectName>>(
"covariance_functions") = dep_covar_names;
141 for (
const auto & param : param_list)
146 loadRequiredHyperParameter(covar_params, covar_name, param, hyperparameters);
149 covar_type, covar_name, covar_params,
false);
152 model.setupCovariance(covar_name);
virtual void act() override
static bool isVectorHyperParameter(const torch::Tensor &tensor)
Return true if a hyperparameter tensor stores a vector of values.
void mooseError(Args &&... args)
std::unordered_map< std::string, torch::Tensor > HyperParameterMap
static bool isScalarHyperParameter(const torch::Tensor &tensor)
Return true if a hyperparameter tensor stores one scalar value.
InputParameters getValidParams(const std::string &name) const
Base class for covariance functions that are used in Gaussian Processes.
void load(GaussianProcessSurrogate &model)
const std::string & name() const
static InputParameters validParams()
static InputParameters validParams()
LoadCovarianceDataAction(const InputParameters ¶ms)
const std::string & type() const
void loadHyperParamMap(const HyperParameterMap &map)
Load some hyperparameters into the local map contained in this object.
const PertinentGeochemicalSystem model(database, {"H2O", "H+", "HCO3-", "O2(aq)", "Ca++", ">(s)FeOH", "radius_neg1", "radius_neg1.5"}, {"Calcite"}, {}, {"Calcite_asdf"}, {"CH4(aq)"}, {">(s)FeOCa+"}, "O2(aq)", "e-")
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::shared_ptr< FEProblemBase > & _problem
TheWarehouse & theWarehouse()
registerMooseAction("StochasticToolsApp", LoadCovarianceDataAction, "load_covariance_data")