Changeset 40729 for trunk/psLib
- Timestamp:
- May 10, 2019, 9:54:48 AM (7 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/math/psMixtureModels.c (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/math/psMixtureModels.c
r36529 r40729 42 42 43 43 44 // #define TESTING 44 # define TESTING 0 45 # define TESTING_VERBOSE 0 45 46 ///////////////////////////////////////////////////////////////////////////////// 46 47 // Internal functions // … … 363 364 } 364 365 366 # if (TESTING) 367 fprintf (stderr, "kmeans : %d %f %f %f\n",*iterations,diff,means->data.F32[0][0],means->data.F32[1][0]); 368 # endif 369 365 370 *iterations += 1; 366 371 } while ((*iterations < MAX_ITERATIONS)&& 367 372 (diff > THRESHOLD)); 373 374 # if (TESTING) 375 fprintf (stderr, "psMMkmeans diff: %f\n", diff); 376 # endif 368 377 369 378 *V = diff; … … 550 559 for (j = 0; j < dim; j++) { // VV 551 560 M->data.F32[j] = means->data.F32[i][j]; 552 // printf("%f %f %f\n", 553 // X->data.F32[j],M->data.F32[j], 554 // S->data.F32[j][j]); 555 } 556 557 558 P->data.F32[k][i] = 559 pi->data.F32[i] * psMMNDGaussian(X,M,S); 561 #if (TESTING_VERBOSE) 562 printf("%f %f %f\n", X->data.F32[j],M->data.F32[j], S->data.F32[j][j]); 563 #endif 564 } 565 566 // if log-likelihood becomes too small, we risk numerical overflow 567 float Prob = psMMNDGaussian(X,M,S); 568 if (Prob < 1e-6) { Prob = 1e-6; } 569 570 P->data.F32[k][i] = pi->data.F32[i] * Prob; 560 571 561 572 logL += log(P->data.F32[k][i]); 562 // printf("%d %d %f %f %f %f\n", 563 // k,i, 564 // pi->data.F32[i], 565 // psMMNDGaussian(X,M,S), 566 // P->data.F32[k][i],logL); 573 #if (TESTING_VERBOSE) 574 printf("%d %d %f %f %f %f\n", 575 k,i, 576 pi->data.F32[i], 577 psMMNDGaussian(X,M,S), 578 P->data.F32[k][i],logL); 579 #endif 567 580 norm_K += P->data.F32[k][i]; 568 581 } … … 633 646 } 634 647 } 635 // printf("%d %f %f %f %f\n",*iterations,logL,oldlogL,means->data.F32[0][0],means->data.F32[1][0]); 648 649 # if (TESTING) 650 fprintf (stderr, "GMM: %d %f %f %f %f\n",*iterations,logL,oldlogL,means->data.F32[0][0],means->data.F32[1][0]); 651 # endif 652 636 653 *iterations = *iterations + 1; 637 654 } while ((logL - oldlogL > 0)&& 638 655 (*iterations < MAX_ITERATIONS)); 656 657 # if (TESTING) 658 fprintf (stderr, "psMMGMM logL: %f\n", logL); 659 # endif 639 660 640 661 psFree(counts); … … 667 688 int iterations; 668 689 double V,V0; 669 #ifdef TESTING 670 int i,j; 671 #endif 690 672 691 if (!modes) { 673 692 modes = psVectorAlloc(N,PS_TYPE_F32); … … 680 699 // Error calculating k-means 681 700 } 682 #ifdef TESTING 683 for (i = 0 ; i < m -1; i++) { 684 for (j = 0; j < dim; j++) { 701 702 #if (TESTING) 703 for (int i = 0 ; i < m -1; i++) { 704 for (int j = 0; j < dim; j++) { 685 705 fprintf(stderr,"KMEANS POST: (%d/%d) (%d/%d) %g\n", 686 706 i,m - 1,j,dim,means->data.F32[i][j]); … … 694 714 // Error calculating GMM 695 715 } 696 #ifdef TESTING 697 for (i = 0 ; i < m - 1; i++) { 698 for (j = 0; j < dim; j++) { 716 717 #if (TESTING) 718 for (int i = 0 ; i < m - 1; i++) { 719 for (int j = 0; j < dim; j++) { 699 720 fprintf(stderr,"GMM POST: (%d/%d) (%d/%d) %g\n", 700 721 i,m - 1,j,dim,means->data.F32[i][j]); … … 712 733 // Error calculating k-means 713 734 } 714 #ifdef TESTING 715 for (i = 0 ; i < m; i++) { 716 for (j = 0; j < dim; j++) { 735 736 #if (TESTING) 737 for (int i = 0 ; i < m; i++) { 738 for (int j = 0; j < dim; j++) { 717 739 fprintf(stderr,"KMEANS POST: (%d/%d) (%d/%d) %g\n", 718 740 i,m,j,dim,means->data.F32[i][j]); … … 726 748 // Error calculating GMM 727 749 } 728 #ifdef TESTING 729 for (i = 0 ; i < m; i++) { 730 for (j = 0; j < dim; j++) { 750 751 #if (TESTING) 752 for (int i = 0 ; i < m; i++) { 753 for (int j = 0; j < dim; j++) { 731 754 fprintf(stderr,"GMM POST: (%d/%d) (%d/%d) %g\n", 732 755 i,m,j,dim,means->data.F32[i][j]);
Note:
See TracChangeset
for help on using the changeset viewer.
