Cholesky decomposition failed when training plda
- Dominant language
- Shell
- Stars
- 15.5k
- Forks
- 5.4k
- PR merge metrics
- No merged PRs in 30d
Description
Hello,
When I train plda using some feature I extracted, this error occured.The tail of log is shown below
```
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 146608
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 209565
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 5 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 140.852
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 197.8
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 6 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 105.141
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 157.448
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 7 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 1117.95
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 5858.14
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 8 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 140.276
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 395.243
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 9 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 12926.4
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 12056.3
LOG (ivector-compute-plda[5.5.0~3-327d]:GetOutput():plda.cc:540) Norm of mean of iVector distribution is 0.745405
WARNING (ivector-compute-plda[5.5.0~3-327d]:Cholesky():tp-matrix.cc:110) Cholesky decomposition failed. Maybe matrix is not positive definite. Throwing error
Cholesky decomposition failed.# Accounting: begin_time=1558008300
And when I add some very small random noise to my feature like you said in the LDA computing when facing the same problem, the error was still there.
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 7 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 101755
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 141957
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 8 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 3136.84
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 17124.3
LOG (ivector-compute-plda[5.5.0~3-327d]:Estimate():plda.cc:529) Plda estimation iteration 9 of 10
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:511) Trace of within-class variance is 1.78053e+08
LOG (ivector-compute-plda[5.5.0~3-327d]:EstimateFromStats():plda.cc:512) Trace of between-class variance is 1.22304e+08
LOG (ivector-compute-plda[5.5.0~3-327d]:GetOutput():plda.cc:540) Norm of mean of iVector distribution is 0.745405
WARNING (ivector-compute-plda[5.5.0~3-327d]:Cholesky():tp-matrix.cc:110) Cholesky decomposition failed. Maybe matrix is not positive definite. Throwing error
Cholesky decomposition failed.# Accounting: begin_time=1558007075
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the ivector-compute-plda path in plda.cc, especially EstimateFromStats(), Estimate(), and GetOutput(), then inspect the Cholesky failure reported from tp-matrix.cc:110. Reproduce the failure with the feature data and logs described in the issue; the issue does not define an expected fix, so done would require identifying the cause and agreeing on the required behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- machine-learning
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100