pymor.models.neural_network

Remark on the documentation:

Due to an issue in autoapi, the classes NeuralNetworkStatefreeOutputModel, NeuralNetworkInstationaryModel, NeuralNetworkInstationaryStatefreeOutputModel and FullyConnectedNN do not appear in the documentation, see https://github.com/pymor/pymor/issues/1343.

Module Contents

Classes

NeuralNetworkModel

Class for models of stationary problems that use artificial neural networks.

NeuralNetworkStatefreeOutputModel

Class for models of the output of stationary problems that use ANNs.

NeuralNetworkInstationaryModel

Class for models of instationary problems that use artificial neural networks.

NeuralNetworkInstationaryStatefreeOutputModel

Class for models of the output of instationary problems that use ANNs.

FullyConnectedNN

Class for neural networks with fully connected layers.

class pymor.models.neural_network.NeuralNetworkModel(neural_network, parameters={}, output_functional=None, products=None, error_estimator=None, visualizer=None, name=None)[source]

Bases: pymor.models.interface.Model

Class for models of stationary problems that use artificial neural networks.

This class implements a Model that 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 FullyConnectedNN with input size that matches the (total) number of parameters and output size equal to the dimension of the reduced space.

parameters

Parameters of the reduced order model (the same as used in the full-order model).

output_functional

Operator mapping a given solution to the model output. In many applications, this will be a Functional, i.e. an Operator mapping to scalars. This is not required, however.

products

A dict of inner product Operators defined on the discrete space the problem is posed on. For each product with key 'x' a corresponding attribute x_product, as well as a norm method x_norm is 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. If error_estimator is not None, an estimate_error(U, mu) method is added to the model which will call error_estimator.estimate_error(U, mu, self).

visualizer

A visualizer for the problem. This can be any object with a visualize(U, m, ...) method. If visualizer is not None, a visualize(U, *args, **kwargs) method is added to the model which forwards its arguments to the visualizer’s visualize method.

name

Name of the model.

_compute_solution(self, mu=None, **kwargs)[source]

Compute the model’s solution for parameter values mu.

This method is called by the default implementation of compute in pymor.models.interface.Model.

Parameters

mu

Parameter values for which to compute the solution.

kwargs

Additional keyword arguments to customize how the solution is computed or to select additional data to be returned.

Returns

VectorArray with the computed solution or a dict which at least must contain the key 'solution'.

class pymor.models.neural_network.NeuralNetworkStatefreeOutputModel(neural_network, parameters={}, error_estimator=None, name=None)[source]

Bases: pymor.models.interface.Model

Class for models of the output of stationary problems that use ANNs.

This class implements a Model that 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 FullyConnectedNN with input size that matches the (total) number of parameters and output size equal to the dimension of the output space.

parameters

Parameters of the reduced order model (the same as used in the full-order model).

error_estimator

An error estimator for the problem. This can be any object with an estimate_error(U, mu, m) method. If error_estimator is not None, an estimate_error(U, mu) method is added to the model which will call error_estimator.estimate_error(U, mu, self).

name

Name of the model.

_compute(self, solution=False, output=False, solution_d_mu=False, output_d_mu=False, solution_error_estimate=False, output_error_estimate=False, output_d_mu_return_array=False, mu=None, **kwargs)[source]
class pymor.models.neural_network.NeuralNetworkInstationaryModel(T, nt, neural_network, parameters={}, output_functional=None, products=None, error_estimator=None, visualizer=None, name=None)[source]

Bases: pymor.models.interface.Model

Class for models of instationary problems that use artificial neural networks.

This class implements a Model that 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 FullyConnectedNN with input size that matches the (total) number of parameters and output size equal to the dimension of the reduced space.

parameters

Parameters of the reduced order model (the same as used in the full-order model).

output_functional

Operator mapping a given solution to the model output. In many applications, this will be a Functional, i.e. an Operator mapping to scalars. This is not required, however.

products

A dict of inner product Operators defined on the discrete space the problem is posed on. For each product with key 'x' a corresponding attribute x_product, as well as a norm method x_norm is 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. If error_estimator is not None, an estimate_error(U, mu) method is added to the model which will call error_estimator.estimate_error(U, mu, self).

visualizer

A visualizer for the problem. This can be any object with a visualize(U, m, ...) method. If visualizer is not None, a visualize(U, *args, **kwargs) method is added to the model which forwards its arguments to the visualizer’s visualize method.

name

Name of the model.

_compute_solution(self, mu=None, **kwargs)[source]

Compute the model’s solution for parameter values mu.

This method is called by the default implementation of compute in pymor.models.interface.Model.

Parameters

mu

Parameter values for which to compute the solution.

kwargs

Additional keyword arguments to customize how the solution is computed or to select additional data to be returned.

Returns

VectorArray with the computed solution or a dict which at least must contain the key 'solution'.

class pymor.models.neural_network.NeuralNetworkInstationaryStatefreeOutputModel(T, nt, neural_network, parameters={}, error_estimator=None, name=None)[source]

Bases: pymor.models.interface.Model

Class for models of the output of instationary problems that use ANNs.

This class implements a Model that 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 FullyConnectedNN with input size that matches the (total) number of parameters and output size equal to the dimension of the output space.

parameters

Parameters of the reduced order model (the same as used in the full-order model).

error_estimator

An error estimator for the problem. This can be any object with an estimate_error(U, mu, m) method. If error_estimator is not None, an estimate_error(U, mu) method is added to the model which will call error_estimator.estimate_error(U, mu, self).

name

Name of the model.

_compute(self, solution=False, output=False, solution_d_mu=False, output_d_mu=False, solution_error_estimate=False, output_error_estimate=False, output_d_mu_return_array=False, mu=None, **kwargs)[source]
class pymor.models.neural_network.FullyConnectedNN(layer_sizes, activation_function=torch.tanh)[source]

Bases: torch.nn.Module, pymor.core.base.BasicObject

Class 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.

forward(self, x)[source]

Performs the forward pass through the neural network.

Applies the weights in the linear layers and passes the outcomes to the activation function.

Parameters

x

Input for the neural network.

Returns

The output of the neural network for the input x.