深度学习:通过不同的库保存和加载通用机器模型

Deep learning: save and load a universal machine model through different libraries

我的问题可以分为两部分。

之所以问这个问题,是因为最近需要将自己之前在tensorflow中训练的一些模型调整到pytorch中。

这个问题的更新: Facebook 和微软将推出一个名为 ONNX 的模型标准,用于在不同框架之间传输模型,例如在 Pytorch 到 Caffe2 之间。 Link 如下:

https://research.fb.com/facebook-and-microsoft-introduce-new-open-ecosystem-for-interchangeable-ai-frameworks/

这个问题的进一步更新: Tensorflow 本身使用 Protocol Buffer 格式存储模型文件,可用于不同模型之间的传输。 Link 如下:

https://www.tensorflow.org/extend/tool_developers/

非常有趣的问题。神经网络是一种数学抽象,由层网络(卷积、循环、...)、操作(点积、非线性、...)及其各自的参数(权重、偏差)组成。

  1. AFAIK,没有通用模型文件。尽管如此,不同的库允许用户以二进制格式保存他们的模型。

  2. 没有用于转换的库,但 github repo 已经在努力解决这个问题。

预测标记建模语言 (PMML) 是一种基于 XML 的表示语言,适用于许多机器学习模型。它是一个 open standard that's used by many companies for serializing and deserializing models. I've used libraries that support PMML for machine learning models like SVM and decision trees but have not used it for deep learning models. However, there are open source projects that will work with Tensorflow and Keras,但这些库似乎用于序列化和反序列化以与同一个库一起使用。您可能想检查 PMML 是否在库之间的序列化和反序列化方面取得进展。

If not, is there a library that can help transfer the formats so that a pytorch machine learning model can be used directly in keras?

您可以尝试 Pytorch2Keras 转换器。

在那一刻,它支持像 Conv2d、Linear、Activations、Element-wise 操作这样的基础层。因此,我转换了 ResNet50 并出现错误 1e-6。