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.