@@ -201,6 +201,7 @@ def ProximalGradient(proxf, proxg, x0, epsg=1.,
201201 """
202202 # check if epgs is a vector
203203 if np .asarray (epsg ).size == 1. :
204+ epsg = epsg * np .ones (niter )
204205 epsg_print = str (epsg )
205206 else :
206207 epsg_print = 'Multi'
@@ -240,14 +241,14 @@ def ProximalGradient(proxf, proxg, x0, epsg=1.,
240241 # proximal step
241242 if not backtracking :
242243 if eta == 1. :
243- x = proxg .prox (y - tau * proxf .grad (y ), epsg * tau )
244+ x = proxg .prox (y - tau * proxf .grad (y ), epsg [ iiter ] * tau )
244245 else :
245- x = x + eta * (proxg .prox (x - tau * proxf .grad (x ), epsg * tau ) - x )
246+ x = x + eta * (proxg .prox (x - tau * proxf .grad (x ), epsg [ iiter ] * tau ) - x )
246247 else :
247- x , tau = _backtracking (y , tau , proxf , proxg , epsg ,
248+ x , tau = _backtracking (y , tau , proxf , proxg , epsg [ iiter ] ,
248249 beta = beta , niterback = niterback )
249250 if eta != 1. :
250- x = x + eta * (proxg .prox (x - tau * proxf .grad (x ), epsg * tau ) - x )
251+ x = x + eta * (proxg .prox (x - tau * proxf .grad (x ), epsg [ iiter ] * tau ) - x )
251252
252253 # update internal parameters for bilinear operator
253254 if isinstance (proxf , BilinearOperator ):
@@ -273,8 +274,8 @@ def ProximalGradient(proxf, proxg, x0, epsg=1.,
273274 pf , pg = proxf (x ), proxg (x )
274275 msg = '%6g %12.5e %10.3e %10.3e %10.3e %10.3e' % \
275276 (iiter + 1 , np .real (to_numpy (x [0 ])) if x .ndim == 1 else np .real (to_numpy (x [0 , 0 ])),
276- pf , pg [ 0 ] if epsg_print == 'Multi' else pg ,
277- pf + np .sum (epsg * pg ),
277+ pf , pg ,
278+ pf + np .sum (epsg [ iiter ] * pg ),
278279 tau )
279280 print (msg )
280281 if show :
0 commit comments