LinearModel#

class cuqi.model.LinearModel(forward, adjoint=None, range_geometry=None, domain_geometry=None)#

Model based on a Linear forward operator.

Parameters:
  • forward (2D ndarray or callable function.) – Forward operator.

  • adjoint (2D ndarray or callable function. (optional if matrix is passed as forward))

  • range_geometry (integer or cuqi.geometry.Geometry (optional)) – If integer is given, a cuqi.geometry._DefaultGeometry is created with dimension of the integer.

  • domain_geometry (integer or cuqi.geometry.Geometry (optional)) – If integer is given, a cuqi.geometry._DefaultGeometry is created with dimension of the integer.

Variables:
  • range_geometry – The geometry representing the range.

  • domain_geometry – The geometry representing the domain.

Example

Consider a linear model represented by a matrix, i.e., \(y=Ax\) where \(A\) is a matrix.

We can define such a linear model by passing the matrix \(A\):

import numpy as np
from cuqi.model import LinearModel

A = np.random.randn(2,3)

model = LinearModel(A)

The dimension of the range and domain geometries will be automatically inferred from the matrix \(A\).

Meanwhile, such a linear model can also be defined by a forward function and an adjoint function:

import numpy as np
from cuqi.model import LinearModel

A = np.random.randn(2,3)

def forward(x):
    return A@x

def adjoint(y):
    return A.T@y

model = LinearModel(forward,
                    adjoint=adjoint,
                    range_geometry=2,
                    domain_geometry=3)

Note that you would need to specify the range and domain geometries in this case as they cannot be inferred from the forward and adjoint functions.

__init__(forward, adjoint=None, range_geometry=None, domain_geometry=None)#

Methods

__init__(forward[, adjoint, range_geometry, ...])

adjoint(y[, is_par])

Adjoint of the model.

forward(*args[, is_par])

Forward function of the model.

get_matrix()

Returns an ndarray with the matrix representing the forward operator.

gradient(direction, wrt[, is_direction_par, ...])

Gradient of the forward operator (Direction-Jacobian product)

Attributes

T

Transpose of linear model.

domain_dim

The dimension of the domain

range_dim

The dimension of the range

shift

The shift of the affine model.