Tôi có một chức năng nhỏ, được cho là đưa ra dự đoán dựa trên thuật toán học máy. Chức năng không hoạt động, vì vậy tôi đặt một bản in để kiểm tra giá trị, và đột nhiên nó bắt đầu hoạt động. Khi tôi nhận xét ra dòng in, nó ngừng hoạt động trở lại. Có điều gì tôi đang thiếu về lý do tại sao điều này sẽ xảy ra?Tại sao in một biến thay đổi giá trị của nó?
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);
}
vì một lý do tạo ra một kết quả khác nhau sau đó
int makePrediction(const InstanceT & instance, bool biased){
double dotProduct = (biased ? instance * _weights + _bias : instance * _weights);
return (dotProduct > 0 ? 1 : -1);
}
và để chứng minh rằng các kết quả khác nhau cho các đầu vào tương tự, tôi gọi chức năng này với:
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;
}
Bất kỳ suy nghĩ ?
Câu hỏi hay cho codereview.stackexchange.com –
Ý của bạn là "không hoạt động"? Hành vi mong đợi và quan sát là gì? Vui lòng chỉ định đầu vào và đầu ra chính xác. –
std :: endl thường cũng tuôn ra. Là mã gọi của bạn sản xuất đầu ra mà phụ thuộc vào trạng thái của bộ đệm của cout? Có vẻ như không. Sự khác biệt thực sự là đầu ra; giá trị chính xác của 'makePrediction' là gì và nó cho biết khi nào sai? –