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!");
54 for (
auto input_i : index_range(converted_input))
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];