scikit-learn、keras、tensorflow和mxnet中保存机器学习模型的所有格式是什么?

11

有很多种方法可以保存模型和它的权重。当有这么多种方式时,没有任何来源可以让我们阅读并比较它们的属性,这样会很令人困惑。

我知道的一些格式有:
1. YAML 文件 - 仅包含结构
2. JSON 文件 - 仅包含结构
3. H5 完整模型 - Keras
4. H5 仅包含权重 - Keras
5. ProtoBuf - 使用 TensorFlow Serving 进行部署
6. Pickle - Scikit-learn
7. Joblib - Scikit-learn - 用于包含大数据对象的替代 Pickle 的工具。

讨论:
与 Scikit-learn 不同,Keras 不建议使用 pickle 来保存模型。相反,模型被保存为 HDF5 文件。HDF5 文件包含了你需要的一切,不仅可以加载模型进行预测(即架构和已训练参数),还可以重新开始训练(即损失和优化器设置以及当前状态)。

除了上述讨论的格式外,Scikit-learn、Keras、Tensorflow 和 Mxnet 还有哪些格式可以用来保存模型?此外,我还缺少哪些关于上述讨论的格式的信息?


1
为什么你要混合使用多个库,如Keras和MXNet?对于Keras/TensorFlow 2.0模型,H5是非常标准的。 - Zabir Al Nazi
2
我想让这个帖子包含所有新手在保存模型时想知道的内容,无论他是在使用scikit-learn、tensorflow还是mxnet。 - superduper
请不要认为这是一个知识论坛或博客,因此可能无法得到完整或有意义的答案。问题应该具体明确,以便人们能够回答。投票关闭。 - Zabir Al Nazi
你看起来像是把 Stack Overflow 当做了一个论坛,但实际上它不是。这里提问的东西不是帖子,而是问题。你似乎并没有提出任何问题。 - Dr. Snoopy
了解哪种格式最具互操作性是很好的,也许可以询问ML社区是否存在标准? - ptn77
3个回答

2

还有像onnx这样的格式,它基本上支持大多数框架,并帮助消除使用不同框架的不同格式时的混乱。


1

还有TFJS格式,可以让您在Web或Node.js环境中使用模型。此外,您还需要TF Lite格式来对移动设备和边缘设备进行推断。最近,TF Lite for Microcontrollers将模型导出为C头文件中的字节数组。


1

关于模型保存格式的问题有多种可能的答案,这取决于您 为什么 想要保存您的模型:

  1. 保存模型以便稍后恢复训练
  2. 保存模型以便稍后进行推理

这些情况下都有几种选项:

您可以使用特定于库的保存函数来保存模型;如果您想要恢复训练,请确保已经保存了所有必要的信息。这里的格式因库而异,实际上并不旨在是您可以检查或读取的格式 - 它们只是文件。如果您正在寻找一个将所有这些保存函数封装在通用API后面的库,您应该查看 modelstore Python 库。

你也可以使用像ONNX这样的通用格式;有从Keras到ONNXscikit-learn到ONNX的转换器可用;但是,后续恢复训练时很少使用此格式。这里的好处是它们都保存为通用格式,这可能简化以后加载它们的过程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接