我在 openCV 中使用 EM 模型,并且遇到了 EM::train 输出的对数似然值的困难。我在单独(但相关)数据上训练 EM 模型,并且对数似然值与数据的绝对值相关联,即当训练值大于 100 时,EM::train 返回强正对数似然值,当训练值小于返回一个大的负值,我的理解是,鉴于 EM 的工作方式,这没有任何意义。训练模型的代码部分如下,以防我犯了任何愚蠢的错误(我对 opencv 很陌生)std::cout 确认当训练值大于 100 并且小于 1 时值大于 1 -1 当训练值小于 1 时。
我的问题与这篇文章类似: OpenCV: Output of the predict function of Expectation Maximization 除了没有实现像 aa DPGMM 这样的东西就无法使用对数似然。
非常感谢,
山姆
{
double logs =0;
cv::EM model (g,1,parameters);
model.train(sample_input.col(i),log_likelihoods);
for(int j = 0; j < number_selected; j++ )
{
logs += log_likelihoods.at<double>(j);
std::cout << log_likelihoods.at<double>(j) <<' ';
}
mean_of_logs[i] += 0.1*logs;
reduced_models.push_back(model);
}