我有一个小函数,应该根据机器学习算法进行预测。该功能不起作用,因此我输入了一条打印语句以检查该值,然后突然开始起作用。当我注释掉打印行时,它再次停止工作。为什么会发生这种情况我缺少什么?
int makePrediction( const InstanceT & instance, bool biased ){
double dotProduct = ( biased ? instance * _weights + _bias : instance * _weights );
std::cout << "dotProduct = " << dotProduct << std::endl;
return ( dotProduct > 0 ? 1 : -1 );
}
由于某种原因会产生不同的结果
int makePrediction( const InstanceT & instance, bool biased ){
double dotProduct = ( biased ? instance * _weights + _bias : instance * _weights );
return ( dotProduct > 0 ? 1 : -1 );
}
为了显示在相同输入下结果不同,我将此函数称为:
std::vector<InstanceT> _instances = populate_data() //this works for both versions
for ( int i = 0; i < _instances.size(); i++ ){
std::cout << "prediction: " << makePrediction( _instances[i], true ) << std::endl;
}
有什么想法吗?
最佳答案
经常发生这种情况的原因有两个:
这些当然是非常通用的建议,但是您必须更好地指定问题才能获得更好的建议:-)。