9 #ifdef MOOSE_LIBTORCH_ENABLED 30 _training_params(getModelData<torch::
Tensor>(
"_training_params"))
38 ::
mooseError(
"Attempting to redefine covariance function using setupCovariance.");
54 std::vector<Real>
std;
64 std::vector<Real> std_dummy;
70 std::vector<Real> &
y,
71 std::vector<Real> &
std)
const 75 mooseAssert(
x.size() == n_dims,
76 "Number of parameters provided for evaluation does not match number of parameters " 77 "used for training.");
80 y = std::vector<Real>(n_outputs, 0.0);
81 std = std::vector<Real>(n_outputs, 0.0);
85 torch::Tensor test_points = torch::empty({1, n_dims}, at::kDouble);
86 auto points_accessor = test_points.accessor<
Real, 2>();
87 for (
unsigned int ii = 0; ii < n_dims; ++ii)
88 points_accessor[0][ii] =
x[ii];
89 test_points = test_points.to(options.device());
93 torch::Tensor K_train_test =
98 torch::Tensor K_test = torch::empty({n_outputs, n_outputs}, options);
102 torch::Tensor pred_value = torch::transpose(
108 torch::Tensor pred_var =
109 K_test - torch::mm(torch::transpose(K_train_test, 0, 1),
113 torch::Tensor std_dev_vec =
114 torch::sqrt(torch::clamp_min(torch::diagonal(pred_var), 0.0)).unsqueeze(0);
118 auto std_accessor = std_dev_cpu.accessor<
Real, 2>();
119 auto pred_value_accessor = pred_value_cpu.accessor<
Real, 2>();
121 for (
const auto output_i :
make_range(n_outputs))
123 y[output_i] = pred_value_accessor[0][output_i];
124 std[output_i] = std_accessor[0][output_i];
virtual void setupCovariance(UserObjectName _covar_name)
This function is called by LoadCovarianceDataAction when the surrogate is loading training data from ...
const torch::Tensor & _training_params
Paramaters (x) used for training.
torch::Tensor toCPUContiguous(const torch::Tensor &tensor)
const std::vector< double > y
static InputParameters validParams()
const std::vector< double > x
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("StochasticToolsApp", GaussianProcessSurrogate)
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
virtual Real evaluate(const std::vector< Real > &x) const
Evaluate surrogate model given a row of parameters.
StochasticTools::GaussianProcess & _gp
unsigned int numOutputs() const
Return the number of outputs assumed for this covariance function.
static InputParameters validParams()
virtual void computeCovarianceMatrix(torch::Tensor &K, const torch::Tensor &x, const torch::Tensor &xp, const bool is_self_covariance) const =0
Generates the Covariance Matrix given two sets of points in the parameter space.
GaussianProcessSurrogate(const InputParameters ¶meters)
CovarianceFunctionBase * getCovarianceFunctionByName(const UserObjectName &name) const
Lookup a CovarianceFunction object by name and return pointer.