@@ -7,7 +7,7 @@ class L2R_L2_SvcFunction extends L2R_ErmFunction {
77
88 public L2R_L2_SvcFunction (Problem prob , Parameter param , double [] C ) {
99 super (prob , param , C );
10- I = new int [prob .l ];
10+ I = new int [prob .getL () ];
1111 }
1212
1313 @ Override
@@ -23,7 +23,7 @@ protected double C_times_loss(int i, double wx_i) {
2323 public void grad (double [] w , double [] g ) {
2424 int i ;
2525 double [] y = prob .y ;
26- int l = prob .l ;
26+ int l = prob .getL () ;
2727 int w_size = get_nr_variable ();
2828
2929 sizeI = 0 ;
@@ -46,7 +46,6 @@ public void grad(double[] w, double[] g) {
4646 @ Override
4747 public void get_diag_preconditioner (double [] M ) {
4848 int w_size = get_nr_variable ();
49- Feature [][] x = prob .x ;
5049
5150 for (int i = 0 ; i < w_size ; i ++)
5251 M [i ] = 1 ;
@@ -55,7 +54,7 @@ public void get_diag_preconditioner(double[] M) {
5554
5655 for (int i = 0 ; i < sizeI ; i ++) {
5756 int idx = I [i ];
58- for (Feature s : x [ idx ] ) {
57+ for (Feature s : prob . getX ( idx ) ) {
5958 M [s .getIndex () - 1 ] += s .getValue () * s .getValue () * C [idx ] * 2 ;
6059 }
6160 }
@@ -65,12 +64,11 @@ public void get_diag_preconditioner(double[] M) {
6564 public void Hv (double [] s , double [] Hs ) {
6665 int i ;
6766 int w_size = get_nr_variable ();
68- Feature [][] x = prob .x ;
6967
7068 for (i = 0 ; i < w_size ; i ++)
7169 Hs [i ] = 0 ;
7270 for (i = 0 ; i < sizeI ; i ++) {
73- Feature [] xi = x [ I [i ]] ;
71+ Feature [] xi = prob . getX ( I [i ]) ;
7472 double xTs = SparseOperator .dot (s , xi );
7573 xTs = C [I [i ]] * xTs ;
7674
@@ -85,12 +83,11 @@ public void Hv(double[] s, double[] Hs) {
8583 protected void subXTv (double [] v , double [] XTv ) {
8684 int i ;
8785 int w_size = get_nr_variable ();
88- Feature [][] x = prob .x ;
8986
9087 for (i = 0 ; i < w_size ; i ++)
9188 XTv [i ] = 0 ;
9289 for (i = 0 ; i < sizeI ; i ++)
93- SparseOperator .axpy (v [i ], x [ I [i ]] , XTv );
90+ SparseOperator .axpy (v [i ], prob . getX ( I [i ]) , XTv );
9491 }
9592
9693}
0 commit comments