It would be nice to implement LGCD for rank1 dictionary in dicodile so it can be easily integrated in alphacsc. I would go with the following steps:
first add a rank1 parameter in dicodile and update set_D and other communication function that communicate D so that it is retireve in rank1. For this first step, the workers should store a full rank D = uv^T (ie forget about the rank 1 inside the worker by computing D from its rank1 form \sum_k u[k]v[k]^T). Also store the rank1 form as a new attribute uv in each worker.
Then track all steps that make use of D in the workers and update them to use uv if rank1.
All these steps should already be implemented in sub functions used in https://github.com/alphacsc/alphacsc/blob/master/alphacsc/utils/coordinate_descent.py as each worker runs an algorithm similar to this one. In particular, I think you need to update the computation of DtD, the reconstruction of X and the _init_beta.
It would be nice to implement LGCD for
rank1
dictionary indicodile
so it can be easily integrated inalphacsc
. I would go with the following steps:rank1
parameter in dicodile and updateset_D
and other communication function that communicateD
so that it is retireve inrank1
. For this first step, the workers should store a full rankD = uv^T
(ie forget about the rank 1 inside the worker by computingD
from its rank1 form\sum_k u[k]v[k]^T
). Also store the rank1 form as a new attributeuv
in each worker.D
in the workers and update them to useuv
ifrank1
. All these steps should already be implemented in sub functions used in https://github.com/alphacsc/alphacsc/blob/master/alphacsc/utils/coordinate_descent.py as each worker runs an algorithm similar to this one. In particular, I think you need to update the computation ofDtD
, the reconstruction ofX
and the_init_beta
.