0
我使用XGBoost在R中訓練了我的模型,現在需要在C++中進行預測。我正在嘗試使用XGBoosterLoadModel
函數在C++中加載模型文件。在C++中讀取XGBoost模型
我的代碼編譯得很好,但是在發現我的單元測試函數時失敗了。當我刪除呼叫功能XGBoosterLoadModel
,一切工作正常,我可以看到我的單元測試。
下面是我在單元測試文件中的內容。任何關於我失蹤的線索都將非常感激:
#include <xgboost/c_api.h>
#include "stdafx.h"
#include <google/gtest/gtest.h>
namespace UnitTests
{
TEST(XGBoost, HysteresisPeakDetection_WithEmptyInput_ReturnsFalse)
{
const char *fname;
BoosterHandle handle;
int a = XGBoosterLoadModel(handle, fname);
}
}
謝謝@amit。不幸的是,問題不僅僅是這個特定的功能。即使是沒有輸入的函數(如XGBGetLastError())也會導致問題!我相信這是由於xgboost和我的項目的不同運行時間! XGBoost需要靜態運行時間!但即使當我將項目運行時更改爲靜態時,問題仍然存在! –
@VahidZadeh如果你發佈一個代碼來重現我可能會幫助的錯誤。我剛剛完成了一個使用xgboost的項目,在R中進行了培訓,使用C++進行了預測併成功克服了大量問題 – amit
感謝您的回覆@amit。我很高興你已經解決了這些問題。我相信我也會面對他們。所以,我感謝您的幫助。 我在問題主體中的代碼基本上是我在測試文件中的所有代碼。我的項目中有其他文件,如果我從項目中刪除這個測試代碼就可以正常工作。我相信問題在於我如何包含(或構建)xgboost的目標庫。但我不確定。我遵循了安裝說明。添加庫文件到您的項目後,您有任何問題嗎? –