pymor.models.neural_network¶
Module Contents¶
- class pymor.models.neural_network.BaseNeuralNetworkModel(dim_input=0, products=None, error_estimator=None, visualizer=None, name=None)[source]¶
Bases:
pymor.models.interface.ModelBase class for models that use artificial neural networks.
This class implements the scaling methods for inputs and outputs/targets of neural networks.
- class pymor.models.neural_network.FullyConnectedNN(layer_sizes, activation_function=torch.tanh)[source]¶
Bases:
torch.nn.Module,pymor.core.base.BasicObjectClass for neural networks with fully connected layers.
This class implements neural networks consisting of linear and fully connected layers. Furthermore, the same activation function is used between each layer, except for the last one where no activation function is applied.
Parameters
- layer_sizes
List of sizes (i.e. number of neurons) for the layers of the neural network.
- activation_function
Function to use as activation function between the single layers.
Methods
Performs the forward pass through the neural network.
- class pymor.models.neural_network.NeuralNetworkInstationaryModel(T, nt, neural_network, parameters={}, scaling_parameters={}, output_functional=None, products=None, error_estimator=None, visualizer=None, name=None)[source]¶
Bases:
BaseNeuralNetworkModelClass for models of instationary problems that use artificial neural networks.
This class implements a
Modelthat uses a neural network for solving.Parameters
- T
The final time T.
- nt
The number of time steps.
- neural_network
The neural network that approximates the mapping from parameter space to solution space. Should be an instance of
FullyConnectedNNwith input size that matches the (total) number of parameters and output size equal to the dimension of the reduced space.- parameters
Parametersof the reduced order model (the same as used in the full-order model).- scaling_parameters
Dict of tensors that determine how to scale inputs before passing them through the neural network and outputs after obtaining them from the neural network. If not provided or each entry is
None, no scaling is applied. Required keys are'min_inputs','max_inputs','min_targets', and'max_targets'.- output_functional
Operatormapping a given solution to the model output. In many applications, this will be aFunctional, i.e. anOperatormapping to scalars. This is not required, however.- products
A dict of inner product
Operatorsdefined on the discrete space the problem is posed on. For each product with key'x'a corresponding attributex_product, as well as a norm methodx_normis added to the model.- error_estimator
An error estimator for the problem. This can be any object with an
estimate_error(U, mu, m)method. Iferror_estimatoris notNone, anestimate_error(U, mu)method is added to the model which will callerror_estimator.estimate_error(U, mu, self).- visualizer
A visualizer for the problem. This can be any object with a
visualize(U, m, ...)method. Ifvisualizeris notNone, avisualize(U, *args, **kwargs)method is added to the model which forwards its arguments to the visualizer’svisualizemethod.- name
Name of the model.
- class pymor.models.neural_network.NeuralNetworkInstationaryStatefreeOutputModel(T, nt, neural_network, parameters={}, scaling_parameters={}, error_estimator=None, name=None)[source]¶
Bases:
BaseNeuralNetworkModelClass for models of the output of instationary problems that use ANNs.
This class implements a
Modelthat uses a neural network for solving for the output quantity in the instationary case.Parameters
- T
The final time T.
- nt
The number of time steps.
- neural_network
The neural network that approximates the mapping from parameter space to output space. Should be an instance of
FullyConnectedNNwith input size that matches the (total) number of parameters and output size equal to the dimension of the output space.- parameters
Parametersof the reduced order model (the same as used in the full-order model).- scaling_parameters
Dict of tensors that determine how to scale inputs before passing them through the neural network and outputs after obtaining them from the neural network. If not provided or each entry is
None, no scaling is applied. Required keys are'min_inputs','max_inputs','min_targets', and'max_targets'.- error_estimator
An error estimator for the problem. This can be any object with an
estimate_error(U, mu, m)method. Iferror_estimatoris notNone, anestimate_error(U, mu)method is added to the model which will callerror_estimator.estimate_error(U, mu, self).- name
Name of the model.
- class pymor.models.neural_network.NeuralNetworkModel(neural_network, parameters={}, scaling_parameters={}, output_functional=None, products=None, error_estimator=None, visualizer=None, name=None)[source]¶
Bases:
BaseNeuralNetworkModelClass for models of stationary problems that use artificial neural networks.
This class implements a
Modelthat uses a neural network for solving.Parameters
- neural_network
The neural network that approximates the mapping from parameter space to solution space. Should be an instance of
FullyConnectedNNwith input size that matches the (total) number of parameters and output size equal to the dimension of the reduced space.- parameters
Parametersof the reduced order model (the same as used in the full-order model).- scaling_parameters
Dict of tensors that determine how to scale inputs before passing them through the neural network and outputs after obtaining them from the neural network. If not provided or each entry is
None, no scaling is applied. Required keys are'min_inputs','max_inputs','min_targets', and'max_targets'.- output_functional
Operatormapping a given solution to the model output. In many applications, this will be aFunctional, i.e. anOperatormapping to scalars. This is not required, however.- products
A dict of inner product
Operatorsdefined on the discrete space the problem is posed on. For each product with key'x'a corresponding attributex_product, as well as a norm methodx_normis added to the model.- error_estimator
An error estimator for the problem. This can be any object with an
estimate_error(U, mu, m)method. Iferror_estimatoris notNone, anestimate_error(U, mu)method is added to the model which will callerror_estimator.estimate_error(U, mu, self).- visualizer
A visualizer for the problem. This can be any object with a
visualize(U, m, ...)method. Ifvisualizeris notNone, avisualize(U, *args, **kwargs)method is added to the model which forwards its arguments to the visualizer’svisualizemethod.- name
Name of the model.
- class pymor.models.neural_network.NeuralNetworkStatefreeOutputModel(neural_network, parameters={}, scaling_parameters={}, error_estimator=None, name=None)[source]¶
Bases:
BaseNeuralNetworkModelClass for models of the output of stationary problems that use ANNs.
This class implements a
Modelthat uses a neural network for solving for the output quantity.Parameters
- neural_network
The neural network that approximates the mapping from parameter space to output space. Should be an instance of
FullyConnectedNNwith input size that matches the (total) number of parameters and output size equal to the dimension of the output space.- parameters
Parametersof the reduced order model (the same as used in the full-order model).- scaling_parameters
Dict of tensors that determine how to scale inputs before passing them through the neural network and outputs after obtaining them from the neural network. If not provided or each entry is
None, no scaling is applied. Required keys are'min_inputs','max_inputs','min_targets', and'max_targets'.- error_estimator
An error estimator for the problem. This can be any object with an
estimate_error(U, mu, m)method. Iferror_estimatoris notNone, anestimate_error(U, mu)method is added to the model which will callerror_estimator.estimate_error(U, mu, self).- name
Name of the model.