是否可以用 C 语言部署一个经过 python 训练的机器学习模型(例如 .pkl 文件)?

数据挖掘 Python C
2021-09-28 03:01:08

我想使用 Python 和 tensor flow、keras 和 scikit-learn 等库来训练我的机器学习。经过训练,我想将这个训练好的模型导出到一个文件中,到目前为止我一直在使用库 pickle。我觉得这在任何 ML 项目中都是非常标准的。

但是,这个问题的重点是,是否可以在 C 语言中使用这个经过训练的模型(例如 .pkl 或 .sav 文件)?当我说“使用”时,我的意思是将值传递给模型并返回预测。

这有点类似于TensorFlow Lite for Microcontrollers,但是,我不确定这是否是解决这个问题的最合适和更简单的方法。

2个回答

图书馆http://www.picklingtools.com/

#include "chooseser.h"

// assume that pickle file is "loaded_pkl";
int main()
{

  Val loaded_pkl;
  LoadValFromFile(loaded_pkl, "my_pkl.pkl", SERIALIZE_P0);
  cout << loaded_pkl << endl;

}

酸洗只是许多可能的答案之一。但它也是最长期存在问题的问题,因为维护可能会成为一场噩梦。

因此,我认为更优雅的解决方案是将您的模型放在 API 层后面,并只公开一个可以以任意数量的语言使用的 REST-ful 端点。从长远来看,这为您提供了最简洁的方法,同时让您可以灵活地使用几乎任何语言的模型。