深度学习:通过不同的库

时间:2017-06-01 23:32:33

标签: python machine-learning tensorflow pytorch

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

  • 是否有可以通过不同库使用的机器学习模型文件格式?例如,我通过pytorch保存了一个模型,然后使用tensorflow加载它?

  • 如果没有,是否有可以帮助传输格式的库,以便可以直接在keras中使用pytorch机器学习模型?

我之所以提出这个问题的原因是,最近我需要调整我以前训练过的一些在tensorflow中的模型到pytorch。

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

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

此问题的进一步更新: Tensorflow本身使用协议缓冲区格式存储模型文件,可用于不同模型之间的传输。链接如下:

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

预测标记建模语言(PMML)是一种基于XML的表示语言,适用于许多机器学习模型。它是许多公司用于序列化和反序列化模型的open standard。我已经使用了支持PMML的库,用于机器学习模型,如SVM和决策树,但还没有将它用于深度学习模型。但是,有一些开源项目可以与TensorflowKeras一起使用,但这些库似乎用于序列化和反序列化以便与同一个库一起使用。您可能想要检查PMML是否在库之间进行序列化和反序列化方面取得了进展。

答案 2 :(得分:0)

  

如果没有,是否有可以帮助传输格式的库,以便可以直接在keras中使用pytorch机器学习模型?

您可以试用Pytorch2Keras转换器。

在那一刻,它支持基础层,如Conv2d,线性,激活,元素操作。所以,我转换了ResNet50,错误为1e-6。