我有一个训练有素的SVM模型。
我用相同的模型和相同的Mat调用预测。我在我的Android设备上运行相同的代码,并通过我的Mac本机编译的小型C ++程序运行。
我通过以下代码验证Mat中的浮点值是否相同:
for (int j = 0; j < featureVector.cols; j++) {
float val = featureVector.at<float>(0,j);
qDebug() << QString::number(val, 'g', 9);
}
float pred = svm.predict(featureVector.reshape(1,1), true);
但是,具有相同输入的两种不同架构的输出总是不同的。这是预期的吗?
样本预测输出:
Android - 2.86143899
Mac - 2.86144328
输出的差异似乎在浮点精度的边界上。 SVM内部各种中间体的处理可能会影响精度?有没有办法获得相同的输出?
我尝试在输入端进行四舍五入到不同的精度级别,当我在这两个不同的平台上运行相同的代码时仍然会得到不同的输出。