Changeset 311

Show
Ignore:
Timestamp:
04/09/09 14:33:10 (15 years ago)
Author:
smidl
Message:

merger

Location:
bdm/estim
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • bdm/estim/merger.cpp

    r310 r311  
    5757 
    5858                //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                        } 
    6364 
    6465                // Initial component in the mixture model 
     
    7879                vec Mix_pdf ( Ns ); 
    7980                while ( !converged ) 
    80         { 
    81                 //Re-estimate Mix 
    82                 //Re-Initialize Mixture model 
    83                 Mix.flatten ( &Mix_init ); 
     81                { 
     82                        //Re-estimate Mix 
     83                        //Re-Initialize Mixture model 
     84                        Mix.flatten ( &Mix_init ); 
    8485                        Mix.bayesB ( Smp_ex, w*Ns ); 
    8586                        delete Mpred; 
     
    99100                                        //Importance of the mixture 
    100101                                        //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 ) 
    104105                                { 
    105106                                        cout<<"Resampling =" << 1./sum_sqr ( w ) << endl; 
  • bdm/estim/merger.h

    r310 r311  
    201201                        MixEF& _Mix() {return Mix;} 
    202202//! Access function 
     203                        emix* proposal() {emix* tmp=Mix.epredictor(); tmp->set_rv(rv); return tmp;} 
     204//! Access function 
    203205                        eEmp& _Smp() {return eSmp;} 
    204206        }; 
  • bdm/estim/mixef.cpp

    r286 r311  
    6666                Wlast = W; 
    6767                // 
     68                //#pragma omp parallel for 
    6869                for ( t=0;t<ndat;t++ ) { 
     70                        //#pragma omp parallel for 
    6971                        for ( i=0;i<n;i++ ) { 
    7072                                ll ( i ) =Coms ( i )->logpred ( data.get_col ( t ) ); 
     
    8991 
    9092                // copy initial statistics 
     93                //#pragma omp parallel for 
    9194                for ( i=0;i<n;i++ ) { 
    9295                        Coms ( i )-> set_statistics ( Coms0 ( i ) ); 
     
    98101                // !!!!    For typical cases wData=1. 
    99102                for ( t=0;t<ndat;t++ ) { 
     103                        //#pragma omp parallel for 
    100104                        for ( i=0;i<n;i++ ) { 
    101105                                Coms ( i )-> bayes ( data.get_col ( t ),W ( i,t ) * wData ( t ) ); 
     
    106110                niter++; 
    107111                //TODO better convergence rule. 
    108                 converged = ( sumsum ( abs ( W-Wlast ) ) /n<0.001 ); 
     112                converged = (niter>10);//( sumsum ( abs ( W-Wlast ) ) /n<0.1 ); 
    109113        } 
    110114