ConvTwoBlockCnstrnt¶
ConvTwoBlockCnstrnt
specialises ADMMTwoBlockCnstrnt
for problems of the form
where \(D \mathbf{x} = \sum_m \mathbf{d}_m * \mathbf{x}_m\), intended to solve problems that have the form
prior to variable splitting.
See ConvBPDNMaskDcpl
as an example of a class derived from
ConvTwoBlockCnstrnt
.
The methods of ConvTwoBlockCnstrnt
that are relevant to an
implementer of a derived class are described in the following
sections.
Initialisation¶
The __init__
method of the derived class should call the
ConvTwoBlockCnstrnt
__init__
method to ensure proper
initialisation.
Block Access¶
Block access methods are as described in
Block Access, except that
ConvTwoBlockCnstrnt.block_sep0
and
ConvTwoBlockCnstrnt.block_cat
override
ADMMTwoBlockCnstrnt.block_sep
and
ADMMTwoBlockCnstrnt.block_cat
respectively, for the following
reason. In ConvTwoBlockCnstrnt
, block 0 has the same shape
as input \(\mathbf{s}\), i.e. \(N \times C \times K \times 1\)
(assuming two spatial dimensions), while block 1 has the dimensions of
\(\mathbf{x}\), i.e. \(N \times 1 \times K \times M\) (again,
assuming two spatial dimensions). In order to allow the two blocks to
be concatenated into a single array, the channel and filter axes are
swapped prior to concatenation and after separation.
Update Steps¶
The update steps are as described in
Update Steps. Typically only the \(\mathbf{y}\)
update ADMM.ystep
will need to be overridden since a full
implementation of the \(\mathbf{x}\) update ADMM.xstep
is
provided.
Constraint Definition¶
The constraint definition methods ADMMTwoBlockCnstrnt.cnst_A
,
ADMMTwoBlockCnstrnt.cnst_AT
,
ADMMTwoBlockCnstrnt.cnst_B
, and
ADMMTwoBlockCnstrnt.cnst_c
are inherited from
ADMMTwoBlockCnstrnt
, and
ConvTwoBlockCnstrnt.cnst_A0
,
ConvTwoBlockCnstrnt.cnst_A0T
, and
ConvTwoBlockCnstrnt.cnst_c0
defined to implement the block
form constraint
so that a derived class need typically not override any of these methods.
Residual Evaluation¶
The residual evaluation methods ADMMTwoBlockCnstrnt.rsdl_r
,
ConvTwoBlockCnstrnt.rsdl_s
,
ADMMTwoBlockCnstrnt.rsdl_rn
,
ConvTwoBlockCnstrnt.rsdl_sn
are all appropriately defined in
terms of the constraint definition methods described above, and will
typically not need to be overridden.
Iteration Statistics¶
The iteration statistics mechanism, as described in
Iteration Statistics, is inherited largely unchanged from
ADMMTwoBlockCnstrnt
.