保存模型及其权重的方法有很多。当有如此多的方法但没有任何来源可以读取和比较它们的属性时,这是令人困惑的。
我知道的一些格式是:
1. YAML 文件 - 仅结构
2. JSON 文件 - 仅结构
3.H5完整模型-Keras
4. 仅 H5 权重 - Keras
5. ProtoBuf - 使用 TensorFlow 服务进行部署
6.Pickle-Scikit-learn
7. Joblib - Scikit-learn - 替代 Pickle,用于包含大数据的对象。
讨论:
与 scikit-learn 不同,Keras 不建议您使用 pickle 保存模型。相反,模型将保存为 HDF5 文件。 HDF5 文件包含加载模型进行预测(即架构和训练参数)以及重新启动训练(即损失和优化器设置以及当前状态)所需的一切。
还有哪些其他格式可以保存 Scikit-learn、Keras、Tensorflow 和 Mxnet 的模型?另外,关于上述每种格式,我还缺少哪些信息?
还存在 TFJS 格式,使您能够在 Web 或 Node.js 环境中使用模型。此外,您将需要 TF Lite 格式才能在移动和边缘设备上进行推理。最近,TF Lite for Microcontrollers 将模型导出为 C 头文件中的字节数组。
您关于保存模型的格式的问题有多种可能的答案,基于您想要保存模型的为什么:
这些场景为您提供了几种选择:
您可以使用库特定的保存功能来保存您的模型;如果您想恢复训练,请确保您已保存真正能够恢复训练所需的所有信息。这里的格式会因库而异,实际上并不是旨在成为您以任何方式检查或读取的格式 - 它们只是文件。如果您正在寻找一个将所有这些保存函数包装在通用 API 后面的库,您应该查看 modelstore Python 库。
您还可以使用通用格式,例如 ONNX;有从 Keras 到 ONNX 和 scikit-learn 到 ONNX 的转换器可用;但使用这种格式稍后恢复训练的情况并不常见。这样做的好处是它们都保存为通用格式,这可以简化以后加载它们的过程。
还有像onnx这样的格式,它基本上支持大多数框架,有助于消除为不同框架使用不同格式的混乱。
您可以以适合部署的格式导出经过训练的模型(例如 ONNX、TensorFlow Lite)。