问题描述
我正在尝试创建一个脚本,该脚本从 Cloud Storage 存储桶加载已保存的 CatBoost 模型,并使用它进行预测。但是,我无法成功加载文件。 CatBoost 抛出模型文件不存在的错误,尽管我已经直接从 UI 复制了路径。
我使用的是 Google 云平台。该脚本位于与存储模型的存储桶位于同一项目中的 AI Platform JupyterLab 笔记本中。我用来进行预测的特征集与模型存储在同一个存储桶中,我能够成功地将特征集文件读入数据帧 (X_eval)。
我尝试同时使用 URI(“gs://...”)和经过身份验证的 URL(“https://...”),但都抛出相同的错误。
#Specify model path
path = 'gs://bucket_id/model-name'
# Load model
from_file = CatBoostClassifier()
model = from_file.load_model(path)
model.predict(X_eval)
---------------------------------------------------------------------------
CatBoostError Traceback (most recent call last)
<ipython-input-9-f7a6068f5718> in <module>
70
71 if __name__ == "__main__":
---> 72 main('data','context')
<ipython-input-9-f7a6068f5718> in main(data,context)
42 # Load model
43 from_file = CatBoostClassifier()
---> 44 from_file.load_model(path)
45
46 model.predict(X_eval)
/opt/conda/lib/python3.7/site-packages/catboost/core.py in load_model(self,fname,format,stream,blob)
2655
2656 if fname is not None:
-> 2657 self._load_model(fname,format)
2658 elif stream is not None:
2659 self._load_from_stream(stream)
/opt/conda/lib/python3.7/site-packages/catboost/core.py in _load_model(self,model_file,format)
1345 raise CatBoostError("Invalid fname type={}: must be str().".format(type(model_file)))
1346
-> 1347 self._object._load_model(model_file,format)
1348 self._set_trained_model_attributes()
1349 for key,value in iteritems(self._get_params()):
_catboost.pyx in _catboost._CatBoost._load_model()
_catboost.pyx in _catboost._CatBoost._load_model()
CatBoostError: catboost/libs/model/model_import_interface.h:19: Model file doesn't exist: gs://bucket_id/model-name
如果我将相同的模型文件上传到本地文件系统(例如,运行 JupyterLabs 笔记本的 VM 的文件系统),则模型加载成功。例如,这有效:
#Specify model path
path = 'model-name'
# Load model
from_file = CatBoostClassifier()
model = from_file.load_model(path)
model.predict(X_eval)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)