@@ -18,9 +18,6 @@ class FISTA(BaseSolver):
18
18
tol : float, default 1e-4
19
19
Tolerance for convergence.
20
20
21
- opt_freq : int, default 10
22
- Frequency for optimality condition check.
23
-
24
21
verbose : bool, default False
25
22
Amount of verbosity. 0/False is silent.
26
23
@@ -32,10 +29,9 @@ class FISTA(BaseSolver):
32
29
https://epubs.siam.org/doi/10.1137/080716542
33
30
"""
34
31
35
- def __init__ (self , max_iter = 100 , tol = 1e-4 , opt_freq = 10 , verbose = 0 ):
32
+ def __init__ (self , max_iter = 100 , tol = 1e-4 , verbose = 0 ):
36
33
self .max_iter = max_iter
37
34
self .tol = tol
38
- self .opt_freq = opt_freq
39
35
self .verbose = verbose
40
36
41
37
def solve (self , X , y , datafit , penalty , w_init = None , Xw_init = None ):
@@ -67,19 +63,18 @@ def solve(self, X, y, datafit, penalty, w_init=None, Xw_init=None):
67
63
Xw = X @ w
68
64
z = w + (t_old - 1. ) / t_new * (w - w_old )
69
65
70
- if n_iter % self .opt_freq == 0 :
71
- opt = penalty .subdiff_distance (w , grad , all_features )
72
- stop_crit = np .max (opt )
66
+ opt = penalty .subdiff_distance (w , grad , all_features )
67
+ stop_crit = np .max (opt )
73
68
74
- if self .verbose :
75
- p_obj = datafit .value (y , w , Xw ) + penalty .value (w )
76
- print (
77
- f"Iteration { n_iter + 1 } : { p_obj :.10f} , "
78
- f"stopping crit: { stop_crit :.2e} "
79
- )
69
+ if self .verbose :
70
+ p_obj = datafit .value (y , w , Xw ) + penalty .value (w )
71
+ print (
72
+ f"Iteration { n_iter + 1 } : { p_obj :.10f} , "
73
+ f"stopping crit: { stop_crit :.2e} "
74
+ )
80
75
81
- if stop_crit < self .tol :
82
- if self .verbose :
83
- print (f"Stopping criterion max violation: { stop_crit :.2e} " )
84
- break
76
+ if stop_crit < self .tol :
77
+ if self .verbose :
78
+ print (f"Stopping criterion max violation: { stop_crit :.2e} " )
79
+ break
85
80
return w
0 commit comments