45template <
typename real_t>
53 const std::vector<int64_t> &
layers,
54 const std::vector<std::vector<std::any>> &
activations,
59 for (
auto i = 0;
i <
layers.size() - 1; ++
i) {
63 layers_.back()->to(options.device(), options.dtype(),
true);
65 torch::nn::init::xavier_uniform_(
layers_.back()->weight);
66 torch::nn::init::constant_(
layers_.back()->bias, 0.0);
79 throw std::runtime_error(
"Invalid number of parameters");
88 std::any_cast<torch::Tensor>(
a[1]),
89 std::any_cast<torch::Tensor>(
a[2]),
90 std::any_cast<torch::Tensor>(
a[3]),
91 std::any_cast<torch::Tensor>(
a[4]), std::any_cast<double>(
a[5]),
92 std::any_cast<double>(
a[6]), std::any_cast<bool>(
a[7])});
96 std::any_cast<torch::Tensor>(
a[1]),
97 std::any_cast<torch::Tensor>(
a[2]),
98 std::any_cast<torch::Tensor>(
a[3]),
99 std::any_cast<torch::Tensor>(
a[4]), std::any_cast<double>(
a[5]),
100 std::any_cast<double>(
a[6])});
104 std::any_cast<torch::Tensor>(
a[1]),
105 std::any_cast<torch::Tensor>(
a[2]),
106 std::any_cast<torch::nn::functional::BatchNormFuncOptions>(
111 new BatchNorm{std::any_cast<torch::Tensor>(
a[1]),
112 std::any_cast<torch::Tensor>(
a[2])});
115 throw std::runtime_error(
"Invalid number of parameters");
124 new CELU{std::any_cast<double>(
a[1]), std::any_cast<bool>(
a[2])});
129 std::any_cast<torch::nn::functional::CELUFuncOptions>(
a[1])});
131 activations_.emplace_back(
new CELU{std::any_cast<double>(
a[1])});
138 throw std::runtime_error(
"Invalid number of parameters");
147 new ELU{std::any_cast<double>(
a[1]), std::any_cast<bool>(
a[2])});
152 std::any_cast<torch::nn::functional::ELUFuncOptions>(
a[1])});
154 activations_.emplace_back(
new ELU{std::any_cast<double>(
a[1])});
161 throw std::runtime_error(
"Invalid number of parameters");
172 throw std::runtime_error(
"Invalid number of parameters");
182 std::any_cast<torch::nn::functional::GLUFuncOptions>(
a[1])});
184 activations_.emplace_back(
new GLU{std::any_cast<int64_t>(
a[1])});
191 throw std::runtime_error(
"Invalid number of parameters");
200 std::any_cast<int64_t>(
a[1]), std::any_cast<torch::Tensor>(
a[2]),
201 std::any_cast<torch::Tensor>(
a[3]), std::any_cast<double>(
a[4])});
206 std::any_cast<torch::nn::functional::GroupNormFuncOptions>(
210 new GroupNorm{std::any_cast<int64_t>(
a[1])});
214 throw std::runtime_error(
"Invalid number of parameters");
223 std::any_cast<double>(
a[1]), std::any_cast<int>(
a[2]),
224 std::any_cast<bool>(
a[3])});
228 std::any_cast<torch::nn::functional::GumbelSoftmaxFuncOptions>(
235 throw std::runtime_error(
"Invalid number of parameters");
245 std::any_cast<torch::nn::functional::HardshrinkFuncOptions>(
249 new Hardshrink{std::any_cast<double>(
a[1])});
256 throw std::runtime_error(
"Invalid number of parameters");
267 throw std::runtime_error(
"Invalid number of parameters");
278 throw std::runtime_error(
"Invalid number of parameters");
286 activations_.emplace_back(
new Hardtanh{std::any_cast<double>(
a[1]),
287 std::any_cast<double>(
a[2]),
288 std::any_cast<bool>(
a[3])});
291 activations_.emplace_back(
new Hardtanh{std::any_cast<double>(
a[1]),
292 std::any_cast<double>(
a[2])});
296 std::any_cast<torch::nn::functional::HardtanhFuncOptions>(
a[1])});
302 throw std::runtime_error(
"Invalid number of parameters");
311 std::any_cast<torch::Tensor>(
a[1]),
312 std::any_cast<torch::Tensor>(
a[2]),
313 std::any_cast<torch::Tensor>(
a[3]),
314 std::any_cast<torch::Tensor>(
a[4]), std::any_cast<double>(
a[5]),
315 std::any_cast<double>(
a[6]), std::any_cast<bool>(
a[7])});
319 std::any_cast<torch::Tensor>(
a[1]),
320 std::any_cast<torch::Tensor>(
a[2]),
321 std::any_cast<torch::Tensor>(
a[3]),
322 std::any_cast<torch::Tensor>(
a[4]), std::any_cast<double>(
a[5]),
323 std::any_cast<double>(
a[6])});
327 std::any_cast<torch::nn::functional::InstanceNormFuncOptions>(
334 throw std::runtime_error(
"Invalid number of parameters");
343 std::any_cast<std::vector<int64_t>>(
a[1]),
344 std::any_cast<torch::Tensor>(
a[2]),
345 std::any_cast<torch::Tensor>(
a[3]), std::any_cast<double>(
a[4])});
350 std::any_cast<torch::nn::functional::LayerNormFuncOptions>(
354 new LayerNorm{std::any_cast<std::vector<int64_t>>(
a[1])});
358 throw std::runtime_error(
"Invalid number of parameters");
366 activations_.emplace_back(
new LeakyReLU{std::any_cast<double>(
a[1]),
367 std::any_cast<bool>(
a[2])});
372 std::any_cast<torch::nn::functional::LeakyReLUFuncOptions>(
376 new LeakyReLU{std::any_cast<double>(
a[1])});
383 throw std::runtime_error(
"Invalid number of parameters");
392 std::any_cast<int64_t>(
a[1]), std::any_cast<double>(
a[2]),
393 std::any_cast<double>(
a[3]), std::any_cast<double>(
a[4])});
397 activations_.emplace_back(
new LocalResponseNorm{std::any_cast<
398 torch::nn::functional::LocalResponseNormFuncOptions>(
a[1])});
401 new LocalResponseNorm{std::any_cast<int64_t>(
a[1])});
405 throw std::runtime_error(
"Invalid number of parameters");
416 throw std::runtime_error(
"Invalid number of parameters");
426 std::any_cast<torch::nn::functional::LogSoftmaxFuncOptions>(
430 new LogSoftmax{std::any_cast<int64_t>(
a[1])});
434 throw std::runtime_error(
"Invalid number of parameters");
445 throw std::runtime_error(
"Invalid number of parameters");
454 std::any_cast<double>(
a[1]), std::any_cast<double>(
a[2]),
455 std::any_cast<int64_t>(
a[3])});
459 std::any_cast<torch::nn::functional::NormalizeFuncOptions>(
466 throw std::runtime_error(
"Invalid number of parameters");
475 new PReLU{std::any_cast<torch::Tensor>(
a[1])});
478 throw std::runtime_error(
"Invalid number of parameters");
488 std::any_cast<torch::nn::functional::ReLUFuncOptions>(
a[1])});
490 activations_.emplace_back(
new ReLU{std::any_cast<bool>(
a[1])});
497 throw std::runtime_error(
"Invalid number of parameters");
507 std::any_cast<torch::nn::functional::ReLU6FuncOptions>(
a[1])});
509 activations_.emplace_back(
new ReLU6{std::any_cast<bool>(
a[1])});
516 throw std::runtime_error(
"Invalid number of parameters");
524 activations_.emplace_back(
new RReLU{std::any_cast<double>(
a[1]),
525 std::any_cast<double>(
a[2]),
526 std::any_cast<bool>(
a[3])});
529 activations_.emplace_back(
new RReLU{std::any_cast<double>(
a[1]),
530 std::any_cast<double>(
a[2])});
534 std::any_cast<torch::nn::functional::RReLUFuncOptions>(
a[1])});
540 throw std::runtime_error(
"Invalid number of parameters");
550 std::any_cast<torch::nn::functional::SELUFuncOptions>(
a[1])});
552 activations_.emplace_back(
new SELU{std::any_cast<bool>(
a[1])});
559 throw std::runtime_error(
"Invalid number of parameters");
570 throw std::runtime_error(
"Invalid number of parameters");
581 throw std::runtime_error(
"Invalid number of parameters");
591 std::any_cast<torch::nn::functional::SoftmaxFuncOptions>(
595 new Softmax{std::any_cast<int64_t>(
a[1])});
599 throw std::runtime_error(
"Invalid number of parameters");
609 std::any_cast<torch::nn::functional::SoftminFuncOptions>(
613 new Softmin{std::any_cast<int64_t>(
a[1])});
617 throw std::runtime_error(
"Invalid number of parameters");
625 activations_.emplace_back(
new Softplus{std::any_cast<double>(
a[1]),
626 std::any_cast<double>(
a[2])});
630 std::any_cast<torch::nn::functional::SoftplusFuncOptions>(
a[1])});
636 throw std::runtime_error(
"Invalid number of parameters");
646 std::any_cast<torch::nn::functional::SoftshrinkFuncOptions>(
650 new Softshrink{std::any_cast<double>(
a[1])});
657 throw std::runtime_error(
"Invalid number of parameters");
668 throw std::runtime_error(
"Invalid number of parameters");
679 throw std::runtime_error(
"Invalid number of parameters");
690 throw std::runtime_error(
"Invalid number of parameters");
698 activations_.emplace_back(
new Threshold{std::any_cast<double>(
a[1]),
699 std::any_cast<double>(
a[2]),
700 std::any_cast<bool>(
a[3])});
703 activations_.emplace_back(
new Threshold{std::any_cast<double>(
a[1]),
704 std::any_cast<double>(
a[2])});
708 std::any_cast<torch::nn::functional::ThresholdFuncOptions>(
712 throw std::runtime_error(
"Invalid number of parameters");
717 throw std::runtime_error(
"Invalid activation function");
723 torch::Tensor
x_in =
x.clone();
733 inline torch::serialize::OutputArchive &
735 const std::string &
key =
"iganet")
const {
739 for (std::size_t
i = 0;
i <
layers_.size(); ++
i) {
741 key +
".layer[" + std::to_string(
i) +
"].in_features",
744 key +
".layer[" + std::to_string(
i) +
"].outputs_features",
746 archive.write(
key +
".layer[" + std::to_string(
i) +
"].bias",
757 inline torch::serialize::InputArchive &
759 const std::string &
key =
"iganet") {
764 archive.read(
key +
".layer[" + std::to_string(
i) +
"].in_features",
766 archive.read(
key +
".layer[" + std::to_string(
i) +
"].outputs_features",
770 "layer[" + std::to_string(
i) +
"]",
774 .bias(
bias.item<
bool>()))));
776 archive.read(
key +
".layer[" + std::to_string(
i) +
"].activation.type",
784 new BatchNorm{torch::Tensor{}, torch::Tensor{}});
886 throw std::runtime_error(
"Invalid activation function");
917template <
typename real_t>
919 :
public torch::nn::ModuleHolder<IgANetGeneratorImpl<real_t>> {
962 template <std::
size_t Coeffs>
964 const std::vector<std::vector<std::any>> &
activations,
971 template <std::size_t...
Coeffs>
973 const std::vector<std::vector<std::any>> &
activations,
974 std::tuple<std::array<int64_t, Coeffs>...> ncoeffs,
985 template <std::
size_t GeometryMapNumCoeffs, std::
size_t VariableNumCoeffs>
987 const std::vector<std::vector<std::any>> &
activations,
999 const std::vector<int64_t> &
layers,
1000 const std::vector<std::vector<std::any>> &
activations,
1001 std::tuple<std::array<int64_t, GeometryMapNumCoeffs>...>
1011 std::vector<int64_t>{
Base::u_.as_tensor_size()}),
1054 return torch::empty({0});
1066 c10::intrusive_ptr<c10d::ProcessGroupMPI>
pg =
1067 c10d::ProcessGroupMPI::createProcessGroupMPI()
1090 loss.backward({},
true,
false);
1095#ifdef IGANET_WITH_MPI
1101 std::vector<c10::intrusive_ptr<::c10d::Work>>
works;
1102 for (
auto &
param :
net_->named_parameters()) {
1103 std::vector<torch::Tensor>
tmp = {
param.value().grad()};
1109 for (
auto &
param :
net_->named_parameters()) {
1110 param.value().grad().data() =
1111 param.value().grad().data() /
pg->getSize();
1133 template <
typename DataLoader>
1137 c10::intrusive_ptr<c10d::ProcessGroupMPI>
pg =
1138 c10d::ProcessGroupMPI::createProcessGroupMPI()
1156 .slice(1,
Base::G_.as_tensor_size(),
1172 .slice(1,
Base::G_.as_tensor_size(),
1197 loss.backward({},
true,
false);
1231 inline virtual nlohmann::json
to_json()
const override {
1232 return "Not implemented yet";
1237 return net_->parameters();
1242 inline torch::OrderedDict<std::string, torch::Tensor>
1244 return net_->named_parameters();
1251 result +=
param.numel();
1260 <<
"net = " <<
net_ <<
"\n";
1271 const std::string &
key =
"iganet")
const {
1272 torch::serialize::OutputArchive
archive;
1278 const std::string &
key =
"iganet") {
1279 torch::serialize::InputArchive
archive;
1285 inline torch::serialize::OutputArchive &
1287 const std::string &
key =
"iganet")
const {
1308 inline torch::serialize::InputArchive &
1310 const std::string &
key =
"iganet") {
1323 opt_.add_parameters(
net_->parameters());
1348#ifdef IGANET_WITH_MPI
1351 static void waitWork(c10::intrusive_ptr<c10d::ProcessGroupMPI>
pg,
1352 std::vector<c10::intrusive_ptr<c10d::Work>>
works) {
1356 }
catch (
const std::exception &
ex) {
1357 Log(
log::error) <<
"Exception received during waitWork: " <<
ex.what()
1367template <
typename Optimizer,
typename GeometryMap,
typename Variable>
1368inline std::ostream &
1371 obj.pretty_print(
os);
1384 decltype(std::declval<GeometryMap>()
1386 std::declval<typename GeometryMap::eval_type>()));
1390 decltype(std::declval<GeometryMap>()
1393 typename GeometryMap::boundary_eval_type>()));
1397 decltype(std::declval<Variable>()
1399 std::declval<typename Variable::eval_type>()));
1403 decltype(std::declval<Variable>()
1405 std::declval<typename Variable::boundary_eval_type>()));
1409 decltype(std::declval<GeometryMap>()
1411 std::declval<typename GeometryMap::eval_type>()));
1415 decltype(std::declval<GeometryMap>()
1418 typename GeometryMap::boundary_eval_type>()));
1422 decltype(std::declval<Variable>()
1424 std::declval<typename Variable::eval_type>()));
1428 decltype(std::declval<Variable>()
1430 std::declval<typename Variable::boundary_eval_type>()));
Definition unittest_iganet.cxx:24
Batch Normalization as described in the paper.
Definition layer.hpp:134
Continuously Differentiable Exponential Linear Units activation function.
Definition layer.hpp:264
Exponential Linear Units activation function.
Definition layer.hpp:341
Gaussian Error Linear Units activation function.
Definition layer.hpp:417
Grated Linear Units activation function.
Definition layer.hpp:468
Group Normalization over a mini-batch of inputs as described in the paper Group Normalization,...
Definition layer.hpp:532
Gumbel-Softmax distribution activation function.
Definition layer.hpp:615
Hard shrinkish activation function.
Definition layer.hpp:692
Hardsigmoid activation function.
Definition layer.hpp:769
Hardswish activation function.
Definition layer.hpp:822
Hardtanh activation function.
Definition layer.hpp:875
IgA base class.
Definition igabase.hpp:456
Variable f_
Spline representation of the reference data.
Definition igabase.hpp:487
typename Base::value_type value_type
Value type.
Definition igabase.hpp:462
static bool constexpr has_GeometryMap
Indicates whether this class provides a geometry map.
Definition igabase.hpp:477
static bool constexpr has_Solution
Indicates whether this class provides a solution.
Definition igabase.hpp:483
static bool constexpr has_RefData
Indicates whether this class provides a reference solution.
Definition igabase.hpp:480
GeometryMap G_
Spline representation of the geometry map.
Definition igabase.hpp:71
Variable u_
Spline representation of the solution.
Definition igabase.hpp:74
IgANetCustomizable.
Definition iganet.hpp:1380
decltype(std::declval< Variable >() .template find_knot_indices< functionspace::interior >(std::declval< typename Variable::eval_type >())) variable_interior_knot_indices_type
Type of the knot indices of the variables in the interior.
Definition iganet.hpp:1399
decltype(std::declval< GeometryMap >() .template find_coeff_indices< functionspace::boundary >(std::declval< typename GeometryMap::boundary_eval_type >())) geometryMap_boundary_coeff_indices_type
Type of the coefficient indices of geometry type at the boundary.
Definition iganet.hpp:1418
decltype(std::declval< Variable >() .template find_knot_indices< functionspace::boundary >(std::declval< typename Variable::boundary_eval_type >())) variable_boundary_knot_indices_type
Type of the knot indices of boundary_eval_type type at the boundary.
Definition iganet.hpp:1405
decltype(std::declval< Variable >() .template find_coeff_indices< functionspace::interior >(std::declval< typename Variable::eval_type >())) variable_interior_coeff_indices_type
Type of the coefficient indices of variable type in the interior.
Definition iganet.hpp:1424
decltype(std::declval< GeometryMap >() .template find_knot_indices< functionspace::boundary >(std::declval< typename GeometryMap::boundary_eval_type >())) geometryMap_boundary_knot_indices_type
Type of the knot indices of the geometry map at the boundary.
Definition iganet.hpp:1393
decltype(std::declval< GeometryMap >() .template find_coeff_indices< functionspace::interior >(std::declval< typename GeometryMap::eval_type >())) geometryMap_interior_coeff_indices_type
Type of the coefficient indices of geometry type in the interior.
Definition iganet.hpp:1411
decltype(std::declval< Variable >() .template find_coeff_indices< functionspace::boundary >(std::declval< typename Variable::boundary_eval_type >())) variable_boundary_coeff_indices_type
Type of the coefficient indices of variable type at the boundary.
Definition iganet.hpp:1430
decltype(std::declval< GeometryMap >() .template find_knot_indices< functionspace::interior >(std::declval< typename GeometryMap::eval_type >())) geometryMap_interior_knot_indices_type
Type of the knot indices of the geometry map in the interior.
Definition iganet.hpp:1386
IgANetGenerator.
Definition iganet.hpp:919
IgANetGeneratorImpl.
Definition iganet.hpp:46
torch::serialize::InputArchive & read(torch::serialize::InputArchive &archive, const std::string &key="iganet")
Reads the IgANet from a torch::serialize::InputArchive object.
Definition iganet.hpp:758
IgANetGeneratorImpl()=default
Default constructor.
IgANetGeneratorImpl(const std::vector< int64_t > &layers, const std::vector< std::vector< std::any > > &activations, Options< real_t > options=Options< real_t >{})
Constructor.
Definition iganet.hpp:52
std::vector< std::unique_ptr< iganet::ActivationFunction > > activations_
Vector of activation functions.
Definition iganet.hpp:909
virtual void pretty_print(std::ostream &os=Log(log::info)) const noexcept override
Definition iganet.hpp:895
torch::Tensor forward(torch::Tensor x)
Forward evaluation.
Definition iganet.hpp:722
std::vector< torch::nn::Linear > layers_
Vector of linear layers.
Definition iganet.hpp:906
torch::serialize::OutputArchive & write(torch::serialize::OutputArchive &archive, const std::string &key="iganet") const
Writes the IgANet into a torch::serialize::OutputArchive object.
Definition iganet.hpp:734
IgANet.
Definition iganet.hpp:933
const auto & options() const
Returns a constant reference to the options structure.
Definition iganet.hpp:1035
void save(const std::string &filename, const std::string &key="iganet") const
Saves the IgANet to file.
Definition iganet.hpp:1270
void load(const std::string &filename, const std::string &key="iganet")
Loads the IgANet from file.
Definition iganet.hpp:1277
Optimizer opt_
Optimizer.
Definition iganet.hpp:946
torch::OrderedDict< std::string, torch::Tensor > named_parameters() const noexcept
Returns a constant reference to the named parameters of the IgANet object.
Definition iganet.hpp:1243
virtual torch::Tensor loss(const torch::Tensor &, int64_t)=0
Computes the loss function.
torch::serialize::InputArchive & read(torch::serialize::InputArchive &archive, const std::string &key="iganet")
Loads the IgANet from a torch::serialize::InputArchive object.
Definition iganet.hpp:1309
IgABase< GeometryMap, Variable > Base
Base type.
Definition iganet.hpp:936
IgANet(const std::vector< int64_t > &layers, const std::vector< std::vector< std::any > > &activations, std::tuple< std::array< int64_t, GeometryMapNumCoeffs >... > geometryMapNumCoeffs, std::tuple< std::array< int64_t, VariableNumCoeffs >... > variableNumCoeffs, IgANetOptions defaults={}, iganet::Options< typename Base::value_type > options=iganet::Options< typename Base::value_type >{})
Constructor: number of layers, activation functions, and number of spline coefficients (different for...
Definition iganet.hpp:998
std::vector< torch::Tensor > parameters() const noexcept
Returns a constant reference to the parameters of the IgANet object.
Definition iganet.hpp:1236
std::size_t nparameters() const noexcept
Returns the total number of parameters of the IgANet object.
Definition iganet.hpp:1248
IgANet(const std::vector< int64_t > &layers, const std::vector< std::vector< std::any > > &activations, std::tuple< std::array< int64_t, Coeffs >... > ncoeffs, IgANetOptions defaults={}, iganet::Options< typename Base::value_type > options=iganet::Options< typename Base::value_type >{})
Constructor: number of layers, activation functions, and number of spline coefficients (same for geom...
Definition iganet.hpp:972
virtual void train()
Trains the IgANet.
Definition iganet.hpp:1064
virtual void pretty_print(std::ostream &os=Log(log::info)) const noexcept override
Returns a string representation of the IgANet object.
Definition iganet.hpp:1258
Optimizer optimizer_type
Type of the optimizer.
Definition iganet.hpp:939
torch::serialize::OutputArchive & write(torch::serialize::OutputArchive &archive, const std::string &key="iganet") const
Writes the IgANet into a torch::serialize::OutputArchive object.
Definition iganet.hpp:1286
virtual torch::Tensor inputs(int64_t epoch) const
Returns the network inputs.
Definition iganet.hpp:1046
auto & options()
Returns a non-constant reference to the options structure.
Definition iganet.hpp:1038
const Optimizer & opt() const
Returns a constant reference to the optimizer.
Definition iganet.hpp:1029
Optimizer & opt()
Returns a non-constant reference to the optimizer.
Definition iganet.hpp:1032
IgANetGenerator< typename Base::value_type > & net()
Returns a non-constant reference to the IgANet generator.
Definition iganet.hpp:1026
const IgANetGenerator< typename Base::value_type > & net() const
Returns a constant reference to the IgANet generator.
Definition iganet.hpp:1021
virtual bool epoch(int64_t)=0
Initializes epoch.
IgANet(IgANetOptions defaults={}, iganet::Options< typename Base::value_type > options=iganet::Options< typename Base::value_type >{})
Default constructor.
Definition iganet.hpp:953
IgANet(const std::vector< int64_t > &layers, const std::vector< std::vector< std::any > > &activations, std::array< int64_t, GeometryMapNumCoeffs > geometryMapNumCoeffs, std::array< int64_t, VariableNumCoeffs > variableNumCoeffs, IgANetOptions defaults={}, iganet::Options< typename Base::value_type > options=iganet::Options< typename Base::value_type >{})
Constructor: number of layers, activation functions, and number of spline coefficients (different for...
Definition iganet.hpp:986
void train(DataLoader &loader)
Trains the IgANet.
Definition iganet.hpp:1134
IgANetOptions options_
Options.
Definition iganet.hpp:949
virtual nlohmann::json to_json() const override
Returns the IgANet object as JSON object.
Definition iganet.hpp:1231
IgANetGenerator< typename Base::value_type > net_
IgANet generator.
Definition iganet.hpp:943
void eval()
Evaluate IgANet.
Definition iganet.hpp:1224
bool operator==(const IgANet &other) const
Returns true if both IgANet objects are the same.
Definition iganet.hpp:1332
IgANet(const std::vector< int64_t > &layers, const std::vector< std::vector< std::any > > &activations, std::array< int64_t, Coeffs > ncoeffs, IgANetOptions defaults={}, iganet::Options< typename Base::value_type > options=iganet::Options< typename Base::value_type >{})
Constructor: number of layers, activation functions, and number of spline coefficients (same for geom...
Definition iganet.hpp:963
bool operator!=(const IgANet &other) const
Returns true if both IgANet objects are different.
Definition iganet.hpp:1346
Instance Normalization as described in the paper.
Definition layer.hpp:958
Layer Normalization as described in the paper.
Definition layer.hpp:1064
Leaky ReLU activation function.
Definition layer.hpp:1159
Local response Normalization.
Definition layer.hpp:1234
LogSigmoid activation function.
Definition layer.hpp:1326
LogSoftmax activation function.
Definition layer.hpp:1377
Mish activation function.
Definition layer.hpp:1444
No-op activation function.
Definition layer.hpp:92
Lp Normalization.
Definition layer.hpp:1487
The Options class handles the automated determination of dtype from the template argument and the sel...
Definition options.hpp:90
PReLU activation function.
Definition layer.hpp:1562
Randomized ReLU activation function.
Definition layer.hpp:1764
ReLU6 activation function.
Definition layer.hpp:1692
ReLU activation function.
Definition layer.hpp:1624
SELU activation function.
Definition layer.hpp:1847
Sigmoid Linear Unit activation function.
Definition layer.hpp:1959
Sigmoid activation function.
Definition layer.hpp:1915
Softmax activation function.
Definition layer.hpp:2004
Softmin activation function.
Definition layer.hpp:2075
Softplus activation function.
Definition layer.hpp:2146
Softshrink activation function.
Definition layer.hpp:2228
Softsign activation function.
Definition layer.hpp:2300
Tanh activation function.
Definition layer.hpp:2344
Tanhshrink activation function.
Definition layer.hpp:2387
Threshold activation function.
Definition layer.hpp:2435
Full qualified name descriptor.
Definition fqn.hpp:26
virtual const std::string & name() const noexcept
Returns the full qualified name of the object.
Definition fqn.hpp:31
Container utility functions.
Full qualified name utility functions.
Isogeometric analysis base class.
auto zip(T &&...seqs)
Definition zip.hpp:97
Definition boundary.hpp:22
constexpr bool is_SplineType_v
Alias to the value of is_SplineType.
Definition bspline.hpp:3243
std::ostream & operator<<(std::ostream &os, const Boundary< Spline > &obj)
Print (as string) a Boundary object.
Definition boundary.hpp:1978
struct iganet::@0 Log
Logger.
activation
Enumerator for nonlinear activation functions.
Definition layer.hpp:23
IgANetOptions.
Definition iganet.hpp:30
TORCH_ARG(int64_t, batch_size)
TORCH_ARG(double, min_loss)
TORCH_ARG(int64_t, max_epoch)
Serialization prototype.
Definition serialize.hpp:31