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 auto input_mean_accessor = input_mean.accessor<
Real, 1>();
48 auto input_std_accessor = input_std.accessor<
Real, 1>();
50 mooseAssert((
unsigned long int)torch::size(input_mean, 0) == converted_input.size() &&
51 (
unsigned long int)torch::size(input_std, 0) == converted_input.size(),
52 "The input standardizer's dimensions should be the same as the input dimension!");
55 converted_input[input_i] =
56 (
x[input_i] - input_mean_accessor[input_i]) / input_std_accessor[input_i];
59 torch::tensor(torch::ArrayRef<Real>(converted_input.data(), converted_input.size()))
65 auto output_mean_accessor = output_mean.accessor<
Real, 1>();
66 auto output_std_accessor = output_std.accessor<
Real, 1>();
68 mooseAssert(output_mean.sizes()[0] == 1 && output_std.sizes()[0] == 1,
69 "The output standardizer's dimensions should be 1!");
72 val =
_nn->forward(x_tf).item<
double>();
73 val = val * output_std_accessor[0] + output_mean_accessor[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)
void ErrorVector unsigned int
auto index_range(const T &sizable)