Tengo una pequeña función, que se supone que hace una predicción basada en un algoritmo de aprendizaje automático. La función no funcionaba, así que puse una declaración de impresión para verificar el valor y, de repente, comenzó a funcionar. Cuando comento la línea de impresión, deja de funcionar de nuevo. ¿Hay algo que me falta acerca de por qué esto sucedería?¿Por qué la impresión de una variable cambia su valor?
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);
}
por alguna razón un resultado diferente a continuación,
int makePrediction(const InstanceT & instance, bool biased){
double dotProduct = (biased ? instance * _weights + _bias : instance * _weights);
return (dotProduct > 0 ? 1 : -1);
}
y para demostrar que los resultados son diferentes, dadas las mismas entradas, llamo a esta función con:
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;
}
Cualquier pensamiento ?
Buena pregunta para codereview.stackexchange.com –
¿Qué quiere decir con "was not working"? ¿Cuál fue el comportamiento esperado y observado? Por favor, especifique la entrada y salida exactas. –
std :: endl generalmente se vacía también. ¿Su código de llamada produce salida que depende del estado del buffer de cout? Parece poco probable. Cuán diferente en realidad es la salida; ¿Cuál es el valor correcto de 'makePrediction' y qué da cuando está equivocado? –