10 #ifdef MOOSE_LIBTORCH_ENABLED 20 params.
addClassDescription(
"Surrogate that evaluates a feedforward artificial neural net. ");
26 _nn(getModelData<
std::shared_ptr<
Moose::LibtorchArtificialNeuralNet>>(
"nn")),
27 _input_standardizer(getModelData<
StochasticTools::Standardizer>(
"input_standardizer")),
28 _output_standardizer(getModelData<
StochasticTools::Standardizer>(
"output_standardizer"))
40 mooseAssert(
_nn->numInputs() ==
x.size(),
41 "Input point does not match dimensionality of training data.");
43 std::vector<Real> converted_input(
x.size(), 0);
47 mooseAssert(input_mean.size() == converted_input.size() &&
48 input_std.size() == converted_input.size(),
49 "The input standardizer's dimensions should be the same as the input dimension!");
52 converted_input[input_i] = (
x[input_i] - input_mean[input_i]) / input_std[input_i];
55 torch::tensor(torch::ArrayRef<Real>(converted_input.data(), converted_input.size()))
61 mooseAssert(output_mean.size() == 1 && output_std.size() == 1,
62 "The output standardizer's dimensions should be 1!");
65 val =
_nn->forward(x_tf).item<
double>();
66 val = val * output_std[0] + output_mean[0];
const StochasticTools::Standardizer & _output_standardizer
Standardizer for use with output response (y)
LibtorchANNSurrogate(const InputParameters ¶meters)
registerMooseObject("StochasticToolsApp", LibtorchANNSurrogate)
const StochasticTools::Standardizer & _input_standardizer
Standardizer for use with input (x)
static InputParameters validParams()
const std::vector< double > x
virtual Real evaluate(const std::vector< Real > &x) const override
Evaluate surrogate model given a row of parameters.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static InputParameters validParams()
const std::shared_ptr< Moose::LibtorchArtificialNeuralNet > & _nn
Pointer to the neural net object (initialized as null)
auto index_range(const T &sizable)