@@ -70,7 +70,7 @@ def pdhg(x, f, g, L, niter, tau=None, sigma=None, **kwargs):
70
70
callback : callable, optional
71
71
Function called with the current iterate after each iteration.
72
72
theta : float, optional
73
- Relaxation parameter, required to fulfill ``0 <= theta <= 1 ``.
73
+ Relaxation parameter, required to fulfill ``theta >= 0 ``.
74
74
Default: 1
75
75
gamma_primal : non-negative float, optional
76
76
Acceleration parameter. If not ``None``, it overrides ``theta`` and
@@ -105,16 +105,16 @@ def pdhg(x, f, g, L, niter, tau=None, sigma=None, **kwargs):
105
105
106
106
where the formal conditions are that :math:`L` is an operator
107
107
between Hilbert spaces :math:`X` and :math:`Y`.
108
- Further, :math:`f : X \rightarrow [0 , +\infty]` and
109
- :math:`g : Y \rightarrow [0 , +\infty]` are proper, convex,
108
+ Further, :math:`f : X \rightarrow (-\infty , +\infty]` and
109
+ :math:`g : Y \rightarrow (-\infty , +\infty]` are proper, convex,
110
110
lower-semicontinuous functionals.
111
111
112
- Convergence is only guaranteed if :math:`L` is linear, :math:`X, Y`
113
- are finite dimensional and the step lengths :math:`\sigma` and
114
- :math:`\tau` satisfy
112
+ Convergence is only guaranteed if :math:`L` is linear,
113
+ :math:`\theta > 1/2`, and the step lengths :math:`\sigma` and :math:`\tau`
114
+ satisfy
115
115
116
116
.. math::
117
- \tau \sigma \|L\|^2 < 1
117
+ \tau \sigma \|L\|^2 < \frac{4}{1 + 2 \theta}
118
118
119
119
where :math:`\|L\|` is the operator norm of :math:`L`.
120
120
@@ -147,6 +147,9 @@ def pdhg(x, f, g, L, niter, tau=None, sigma=None, **kwargs):
147
147
The non-linear case is analyzed in `[Val2014]
148
148
<https://doi.org/10.1088/0266-5611/30/5/055012>`_.
149
149
150
+ The conditions on :math:`\tau` and :math:`sigma` are according to
151
+ `[BUG2023] <https://arxiv.org/abs/2309.03998v1>`_.
152
+
150
153
See Also
151
154
--------
152
155
odl.solvers.nonsmooth.douglas_rachford.douglas_rachford_pd :
@@ -158,6 +161,11 @@ def pdhg(x, f, g, L, niter, tau=None, sigma=None, **kwargs):
158
161
159
162
References
160
163
----------
164
+ [BUG2023] Banert, S, Upadhyaya M, and Giselsson, P.
165
+ *The Chambolle--Pock method converges weakly with :math:`\theta > 1/2`
166
+ and :math:`\tau \sigma \|L\|^2 < 4/(1+2\theta)`*. arXiv preprint
167
+ 2309.03998v1 [math.OC] (2023).
168
+
161
169
[CP2011a] Chambolle, A and Pock, T. *A First-Order
162
170
Primal-Dual Algorithm for Convex Problems with Applications to
163
171
Imaging*. Journal of Mathematical Imaging and Vision, 40 (2011),
@@ -203,8 +211,8 @@ def pdhg(x, f, g, L, niter, tau=None, sigma=None, **kwargs):
203
211
# Relaxation parameter
204
212
theta = kwargs .pop ('theta' , 1 )
205
213
theta , theta_in = float (theta ), theta
206
- if not 0 <= theta <= 1 :
207
- raise ValueError ('`theta` {} not in [0, 1] '
214
+ if not theta >= 0 :
215
+ raise ValueError ('`theta` must be non-negative, got {} '
208
216
'' .format (theta_in ))
209
217
210
218
# Acceleration parameters
0 commit comments