Changeset 311
Legend:
- Unmodified
- Added
- Removed
-
bdm/estim/merger.cpp
r310 r311 57 57 58 58 //initialize importance weights 59 if ( !fix_smp ) 60 for ( int i=0;i<Ns;i++ ){ 61 lw_mix ( i ) =g0->evallog ( Smp ( i ) ); 62 } 59 if ( !fix_smp ) 60 for ( int i=0;i<Ns;i++ ) 61 { 62 lw_mix ( i ) =g0->evallog ( Smp ( i ) ); 63 } 63 64 64 65 // Initial component in the mixture model … … 78 79 vec Mix_pdf ( Ns ); 79 80 while ( !converged ) 80 {81 //Re-estimate Mix82 //Re-Initialize Mixture model83 Mix.flatten ( &Mix_init );81 { 82 //Re-estimate Mix 83 //Re-Initialize Mixture model 84 Mix.flatten ( &Mix_init ); 84 85 Mix.bayesB ( Smp_ex, w*Ns ); 85 86 delete Mpred; … … 99 100 //Importance of the mixture 100 101 //lw_mix ( i ) =Mix.logpred (Smp_ex.get_col(i) ); 101 lw_mix ( i ) = Mpred->evallog (Smp(i));102 } 103 if ( 1)102 lw_mix ( i ) = Mpred->evallog ( Smp ( i ) ); 103 } 104 if ( 0 ) 104 105 { 105 106 cout<<"Resampling =" << 1./sum_sqr ( w ) << endl; -
bdm/estim/merger.h
r310 r311 201 201 MixEF& _Mix() {return Mix;} 202 202 //! Access function 203 emix* proposal() {emix* tmp=Mix.epredictor(); tmp->set_rv(rv); return tmp;} 204 //! Access function 203 205 eEmp& _Smp() {return eSmp;} 204 206 }; -
bdm/estim/mixef.cpp
r286 r311 66 66 Wlast = W; 67 67 // 68 //#pragma omp parallel for 68 69 for ( t=0;t<ndat;t++ ) { 70 //#pragma omp parallel for 69 71 for ( i=0;i<n;i++ ) { 70 72 ll ( i ) =Coms ( i )->logpred ( data.get_col ( t ) ); … … 89 91 90 92 // copy initial statistics 93 //#pragma omp parallel for 91 94 for ( i=0;i<n;i++ ) { 92 95 Coms ( i )-> set_statistics ( Coms0 ( i ) ); … … 98 101 // !!!! For typical cases wData=1. 99 102 for ( t=0;t<ndat;t++ ) { 103 //#pragma omp parallel for 100 104 for ( i=0;i<n;i++ ) { 101 105 Coms ( i )-> bayes ( data.get_col ( t ),W ( i,t ) * wData ( t ) ); … … 106 110 niter++; 107 111 //TODO better convergence rule. 108 converged = ( sumsum ( abs ( W-Wlast ) ) /n<0.001 );112 converged = (niter>10);//( sumsum ( abs ( W-Wlast ) ) /n<0.1 ); 109 113 } 110 114