9 #ifdef MOOSE_LIBTORCH_ENABLED 14 #include <petscdmda.h> 16 #include "libmesh/petsc_vector.h" 17 #include "libmesh/petsc_matrix.h" 28 "Permit re-training Gaussian Process surrogate model for active learning.");
29 params.
addRequiredParam<UserObjectName>(
"covariance_function",
"Name of covariance function.");
31 "standardize_params",
true,
"Standardize (center and scale) training parameters (x values)");
33 "standardize_data",
true,
"Standardize (center and scale) training data (y values)");
34 params.
addParam<
unsigned int>(
"num_iters", 1000,
"Tolerance value for Adam optimization");
35 params.
addParam<
unsigned int>(
"batch_size", 0,
"The batch size for Adam optimization");
36 params.
addParam<
Real>(
"learning_rate", 0.001,
"The learning rate for Adam optimization");
39 MooseEnum(
"adam=0 legacy_adam=1",
"adam"),
40 "The Adam optimizer semantics to use for Gaussian process hyperparameter tuning.");
42 "show_every_nth_iteration",
44 "Switch to show Adam optimization loss values at every nth step. If 0, nothing is showed.");
45 params.
addParam<std::vector<std::string>>(
46 "tune_parameters", {},
"Select hyperparameters to be tuned");
47 params.
addParam<std::vector<Real>>(
"tuning_min", {},
"Minimum allowable tuning value");
48 params.
addParam<std::vector<Real>>(
"tuning_max", {},
"Maximum allowable tuning value");
57 _training_params(declareModelData<torch::
Tensor>(
"_training_params")),
58 _training_data(declareModelData<torch::
Tensor>(
"_training_data")),
59 _standardize_params(getParam<bool>(
"standardize_params")),
60 _standardize_data(getParam<bool>(
"standardize_data")),
61 _optimization_opts(
StochasticTools::GaussianProcess::GPOptimizerOptions(
62 getParam<unsigned
int>(
"show_every_nth_iteration"),
63 getParam<unsigned
int>(
"num_iters"),
64 getParam<unsigned
int>(
"batch_size"),
65 getParam<
Real>(
"learning_rate"),
74 getParam<std::vector<std::string>>(
"tune_parameters"),
75 getParam<std::vector<Real>>(
"tuning_min"),
76 getParam<std::vector<Real>>(
"tuning_max"));
81 const std::vector<Real> & outputs)
const 84 if (inputs.size() != outputs.size())
87 ") does not match number of outputs (",
91 mooseError(
"There is no data for retraining.");
93 const auto input_size = inputs[0].size();
94 std::vector<Real> flat_inputs;
95 flat_inputs.reserve(outputs.size() * input_size);
97 for (
const auto & input : inputs)
99 if (input.size() != input_size)
100 mooseError(
"All active learning retraining inputs must have the same dimension.");
101 flat_inputs.insert(flat_inputs.end(), input.begin(), input.end());
105 flat_inputs, {cast_int<int64_t>(outputs.size()), cast_int<int64_t>(input_size)});
130 const std::vector<Real> &
147 const auto data_accessor = training_data.accessor<
Real, 2>();
148 for (
unsigned int i = 0; i < norm_training_outs.size(); ++i)
149 norm_training_outs[i] = data_accessor[i][0];
const T & getParam(const std::string &name) const
virtual void reTrain(const std::vector< std::vector< Real >> &inputs, const std::vector< Real > &outputs) const final
torch::Tensor vectorToTensorCopy(const std::vector< DataType > &vector, c10::IntArrayRef sizes)
torch::Tensor toCPUContiguous(const torch::Tensor &tensor)
const std::vector< Real > & getLengthScales() const
Return the current length scales from GP training.
torch::Tensor & _training_data
Outputs (y) used for training, along with statistics.
static InputParameters validParams()
registerMooseObject("StochasticToolsApp", ActiveLearningGaussianProcess)
ActiveLearningGaussianProcess(const InputParameters ¶meters)
torch::DeviceType getLibtorchDevice() const
torch::Tensor & _training_params
Paramaters (x) used for training, along with statistics.
bool _standardize_data
Switch for training data(y) standardization.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Interface for objects that need to use samplers.
void mooseError(Args &&... args) const
void moveToLibtorchDevice(torch::Tensor &tensor, const torch::DeviceType device_type)
StochasticTools::GaussianProcess & _gp
The GP handler.
const StochasticTools::GaussianProcess::GPOptimizerOptions _optimization_opts
Struct holding parameters necessary for parameter tuning.
This is the base trainer class whose main functionality is the API for declaring model data...
static InputParameters validParams()
bool _standardize_params
Switch for training param (x) standardization.
void ErrorVector unsigned int
const StochasticTools::Standardizer & getTrainingStandardizer() const
Return the training data outputs standardizer.
void getNormTrainingOuts(std::vector< Real > &norm_training_outs) const
Return the normalized training outputs.
CovarianceFunctionBase * getCovarianceFunctionByName(const UserObjectName &name) const
Lookup a CovarianceFunction object by name and return pointer.