TransportMaps.Maps.ParametricComponentwiseMapBase
¶
Module Contents¶
Classes¶
Map \(T[{\bf a}_{1:d_y}]({\bf x})= [T_1[{\bf a}_1]({\bf x}_{{\bf j}_{1}}),\ldots,T_{d_y}[{\bf a}_{d_y}]({\bf x}_{{\bf j}_{d_y}})]^\top\), where \(T_i[{\bf a}_i]({\bf x}_{{\bf j}_{i}}):\mathbb{R}^{n_i}\times\mathbb{R}^{\text{dim}({{\bf j}_{i}})}\rightarrow\mathbb{R}\). |
- class TransportMaps.Maps.ParametricComponentwiseMapBase.ParametricComponentwiseMap(**kwargs)[source]¶
Bases:
TransportMaps.Maps.ComponentwiseMapBase.ComponentwiseMap
,TransportMaps.Maps.ParametricMapBase.ParametricMap
Map \(T[{\bf a}_{1:d_y}]({\bf x})= [T_1[{\bf a}_1]({\bf x}_{{\bf j}_{1}}),\ldots,T_{d_y}[{\bf a}_{d_y}]({\bf x}_{{\bf j}_{d_y}})]^\top\), where \(T_i[{\bf a}_i]({\bf x}_{{\bf j}_{i}}):\mathbb{R}^{n_i}\times\mathbb{R}^{\text{dim}({{\bf j}_{i}})}\rightarrow\mathbb{R}\).
- property n_coeffs[source]¶
Returns the total number of coefficients.
- Returns:
total number \(N\) of coefficients characterizing the transport map.
- property coeffs[source]¶
Returns the actual value of the coefficients.
- Returns:
(
ndarray
[\(N\)]) – coefficients.
- abstract get_identity_coeffs()[source]¶
[Abstract] Returns the coefficients corresponding to the identity map
- Returns:
coefficients
- Return type:
(
ndarray
[\(N\)])- Raises:
NotImplementedError – must be implemented in subclasses.
- grad_a(x, precomp=None, idxs_slice=slice(None), cache=None)[source]¶
Compute \(\nabla_{\bf a} T[{\bf a}]({\bf x})\)
By the definition of the transport map \(T[{\bf a}]({\bf x})\), the components \(T_1[{\bf a}^{(1)}] ({\bf x}_1)\), \(T_2[{\bf a}^{(2)}] ({\bf x}_{1:2})\), … are defined by different sets of parameters \({\bf a}^{(1)}\), \({\bf a}^{(2)}\), etc.
For this reason \(\nabla_{\bf a} T[{\bf a}]({\bf x})\) is block diagonal:
\nabla_a T[{\bf a}]({\bf x}) = \begin{bmatrix} \left[ \nabla_{{\bf a}^{(1)}} T_1[{\bf a}^{(1)}] ({\bf x}_1) \right]^T & {\bf 0} & \cdots \\ {\bf 0} & \left[ \nabla_{{\bf a}^{(2)}} T_2[{\bf a}^{(2)}] ({\bf x}_{1:2}) \right]^T & \\ \vdots & & \ddots \end{bmatrix}Consequentely this function will return only the diagonal blocks of the gradient.
- Parameters:
x (
ndarray
[\(m,d\)]) – evaluation pointsprecomp (
dict
) – dictionary of precomputed valuesidxs_slice (slice) – if precomputed values are present, this parameter indicates at which of the points to evaluate. The number of indices represented by
idxs_slice
must matchx.shape[0]
.cache (
dics
) – cache
- Returns:
- Raises:
ValueError – if \(d\) does not match the dimension of the transport map.
- abstract grad_a_inverse(x, precomp=None, idxs_slice=slice(None))[source]¶
[Abstract] Compute \(\nabla_{\bf a} T^{-1}({\bf x},{\bf a})\)
- Parameters:
- Returns:
- (
ndarray
[\(m,d,N\)]) – \(\nabla_{\bf a} T^{-1}({\bf x},{\bf a})\)
- (
- Raises:
ValueError – if \(d\) does not match the dimension of the transport map.
- hess_a(x, precomp=None, idxs_slice=slice(None), cache=None)[source]¶
Compute \(\nabla^2_{\bf a} T[{\bf a}]({\bf x})\).
As in the case of
grad_a()
, the \(d \times N \times N\) Hessian of T[{bf a}]({bf x}) is (hyper) block diagonal.- Parameters:
- Returns:
- Raises:
ValueError – if \(d\) does not match the dimension of the transport map.
- action_hess_a(x, da, precomp=None, idxs_slice=slice(None), cache=None)[source]¶
Compute \(\langle\nabla^2_{\bf a} T[{\bf a}]({\bf x}), \delta{\bf a}\rangle\).
As in the case of
grad_a()
, the :math:`d times N ` actions of the Hessian of T[{bf a}]({bf x}) is (hyper) block diagonal.- Parameters:
x (
ndarray
[\(m,d\)]) – evaluation pointsda (
ndarray
[\(N\)]) – direction on which to evaluate the Hessianprecomp (
dict
) – dictionary of precomputed valuesidxs_slice (slice) – if precomputed values are present, this parameter indicates at which of the points to evaluate. The number of indices represented by
idxs_slice
must matchx.shape[0]
.cache (dict) – cache
- Returns:
- Raises:
ValueError – if \(d\) does not match the dimension of the transport map.
- grad_a_grad_x(x, precomp=None, idxs_slice=slice(None), *args, **kwargs)[source]¶
Compute \(\nabla_{\bf a} \nabla_{\bf x} T[{\bf a}]({\bf x})\)
By the definition of the transport map \(T[{\bf a}]({\bf x})\), the components \(T_1[{\bf a}^{(1)}] ({\bf x}_1)\), \(T_2[{\bf a}^{(2)}] ({\bf x}_{1:2})\), … are defined by different sets of parameters \({\bf a}^{(1)}\), \({\bf a}^{(2)}\), etc.
For this reason \(\nabla_{\bf a} \nabla_{\bf x} T[{\bf a}]({\bf x})\) is block diagonal:
\nabla_a \nabla_{\bf x} T[{\bf a}]({\bf x}) = \begin{bmatrix} \left[ \nabla_{{\bf a}^{(1)}} \nabla_{\bf x}_1 T_1[{\bf a}^{(1)}] ({\bf x}_1) \right]^T & {\bf 0} & \cdots \\ {\bf 0} & \left[ \nabla_{{\bf a}^{(2)}} \nabla_{\bf x}_{1:2} T_2[{\bf a}^{(2)}] ({\bf x}_{1:2}) \right]^T & \\ \vdots & & \ddots \end{bmatrix}Consequentely this function will return only the diagonal blocks of the gradient.
- Parameters:
- Returns:
- Raises:
ValueError – if \(d\) does not match the dimension of the transport map.
- grad_a_hess_x(x, precomp=None, idxs_slice=slice(None), *args, **kwargs)[source]¶
Compute \(\nabla_{\bf a} \nabla^2_{\bf x} T[{\bf a}]({\bf x})\).
By the definition of the transport map \(T[{\bf a}]({\bf x})\), the components \(T_1[{\bf a}^{(1)}] ({\bf x}_1)\), \(T_2[{\bf a}^{(2)}] ({\bf x}_{1:2})\), … are defined by different sets of parameters \({\bf a}^{(1)}\), \({\bf a}^{(2)}\), etc.
For this reason \(\nabla_{\bf a} \nabla^2_{\bf x} T[{\bf a}]({\bf x})\) is block diagonal:
\nabla_a \nabla^2_{\bf x} T[{\bf a}]({\bf x}) = \begin{bmatrix} \left[ \nabla_{{\bf a}^{(1)}} \nabla^2_{\bf x}_1 T_1[{\bf a}^{(1)}] ({\bf x}_1) \right]^T & {\bf 0} & \cdots \\ {\bf 0} & \left[ \nabla_{{\bf a}^{(2)}} \nabla^2_{\bf x}_{1:2} T_2[{\bf a}^{(2)}] ({\bf x}_{1:2}) \right]^T & \\ \vdots & & \ddots \end{bmatrix}Consequentely this function will return only the diagonal blocks of the hessian.
- Parameters:
- Returns:
- Raises:
ValueError – if \(d\) does not match the dimension of the transport map.