能在不同的深度学习框架之间转换模型?微软的MMdnn做到了

2018 年 1 月 5 日 AI100 波波


Microsoft/MMdnn:深度学习框架随心切换


学习深度学习的各位同学都希望自己的模型能在不同的深度学习框架之间随意转换,比如,斯坦福大学CVGL实验室的Saumitro Dasgupta就做过一个把Caffe模型转换到TensorFlow的工具caffe-tensorflow。


不过,两种框架可远远不够。


为此,微软就做了一套能在不同的深度学习框架之间进行交互式操作的工具集——MMdnn,它是一个综合性的跨框架解决方案,能够用于深度神经网络模型的转换,可视化及诊断等操作,可在Caffe,Keras,MXNet,Tensorflow,CNTK和PyTorch等框架之间实现模型的转换。


这里是它的GitHub链接:https://github.com/Microsoft/MMdnn


其中,“MM”代表模型管理,“dnn”代表深度神经网络的缩写。本质上,它就是把一个框架训练的多个DNN模型转换成其他框架下的模型,主要功能如下:


  • 模型文件转换器:在不同框架之间转换DNN模型

  • 模型代码片段生成器:为不同框架生成训练或推理代码片段

  • 模型可视化工具:可视化不同框架下DNN模型的网络架构和参数

  • 模型兼容性测试(正在完善中)



安装


对于稳定版本的MMdnn,你可以通过如下命令获得:


pip install https://github.com/Microsoft/MMdnn/releases/download/0.1.2/mmdnn-0.1.2-py2.py3-none-any.whl


对于最新的版本,你可以用这个命令安装:


pip install -U git+https://github.com/Microsoft/MMdnn.git@master



功能


模型转换


从学术界到产业界,存在各种各样的深度学习框架来供开发人员、研究人员设计模型,然而,对于神经网络的结构,每种框架都有它自己的定义,并为模型设定它自己的保存格式,诸如此类的框架差异妨碍了模型之间的交互性操作。




为此,我们提供了一个这样的模型转换器,来帮助开发人员通过中间表示格式在不同框架之间实现模型的转换。


支持框架

  • Caffe

  • Keras

  • MXNet

  • Tensorflow(实验研究性的)

  • Microsoft Cognitive Toolkit(CNTK)(生产性的)

  • PyTorch(生产性的)

  • CoreML(实验研究性的、生产性的)


模型测试


在一些当前框架所支持的ImageNet模型上测试模型的转换功能。



正在完善的框架

  • Pytorch

  • CNTK

  • Caffe2



模型可视化


提交模型的IR json文件,使用MMdnn的模型可视化器来可视化模型结构及参数。


再次以Keras框架的“inception_v3”模型为例。


1. 下载预先训练的模型


python -m mmdnn.conversion.examples.keras.extract_model -n inception_v3


2. 预先训练的模型文件转换为中间表示


python3 -m mmdnn.conversion._script.convertToIR -f keras -d keras_inception_v3 -n imagenet_inception_v3.json


3. 打开MMdnn模型可视化器并选择文件keras_inception_v3.json





例子


1.Keras "inception_v3" to CNTK及相关问题

https://github.com/Microsoft/MMdnn/blob/master/docs/keras2cntk.md


2.MXNet "resnet 152 11k" 到 PyTorch

https://github.com/Microsoft/MMdnn/issues/6


3.Tensorflow "resnet 101" 到 PyTorch

https://github.com/Microsoft/MMdnn/issues/22


4.Tensorflow "mnist mlp model" 到 CNTK

https://github.com/Microsoft/MMdnn/issues/11


5.Tensorflow "Inception_v3" 到 MXNet

https://github.com/Microsoft/MMdnn/issues/30


6.Caffe "AlexNet" 到 Tensorflow

https://github.com/Microsoft/MMdnn/issues/10


7.Caffe "inception_v4" 到 Tensorflow

https://github.com/Microsoft/MMdnn/issues/26


8.Caffe "VGG16_SOD" 到 Tensorflow

https://github.com/Microsoft/MMdnn/issues/27



贡献


中间表示


中间表示将网络体系结构存储在protobuf二进制文件中,并以NumPy本地的格式储存预训练的模型权重。


注意!当前的IR权重数据是NHWC(最后通道)格式。


详细信息在ops.txt和graph.proto中。欢迎提出新操作及任何意见。


构架


我们正在开发其他的框架模型转换及可视化功能,如Caffe2,PyTorch,CoreML等框架。更多有关RNN的相关操作正在研究中。欢迎提出任何贡献和建议!


授权许可


大多数情况下需要你同意参与者许可协议(CLA),声明你有权并授予我们使用你的贡献的权利。更多有关的详细信息,请访问https://cla.microsoft.com。


当你提交pull请求时,CLA机器人将自动确定你是否需要提供CLA并适当地装饰PR(例如标签、注释等)。你只需要按照机器人提供的说明,使用我们的CLA,在整个回购期间完成一次即可。


致谢


感谢Saumitro Dasgupta的caffe初始代码 - > IR转换是对他的caffe-tensorflow项目的引用。



热文精选


2018年了,但愿你还有被剥削的价值!因为AI失业潮真的开始了...

2018 年了,该不该下定决心转型AI呢?

不用数学也能讲清贝叶斯理论的马尔可夫链蒙特卡洛方法?这篇文章做到了

盘点深度学习一年来在文本、语音和视觉等方向的进展,看强化学习如何无往而不利

先搞懂这八大基础概念,再谈机器学习入门!

这三个普通程序员,几个月就成功转型AI,他们的经验是...

干货 | AI 工程师必读,从实践的角度解析一名合格的AI工程师是怎样炼成的

AI校招程序员最高薪酬曝光!腾讯80万年薪领跑,还送北京户口

详解 | 如何用Python实现机器学习算法

经验 | 如何高效学Python?


登录查看更多
4

相关内容

【ACL2020-Google】逆向工程配置的神经文本生成模型
专知会员服务
16+阅读 · 2020年4月20日
免费!Google Colab现已支持英伟达T4 GPU
新智元
5+阅读 · 2019年4月25日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
keras系列︱深度学习五款常用的已训练模型
数据挖掘入门与实战
10+阅读 · 2018年3月27日
2017年四巨头的深度学习框架之战,你支持谁?
全球人工智能
6+阅读 · 2017年12月29日
一招检验10大深度学习框架哪家强!
深度学习世界
3+阅读 · 2017年9月14日
Caffe 深度学习框架上手教程
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月12日
Arxiv
3+阅读 · 2018年12月19日
Rapid Customization for Event Extraction
Arxiv
7+阅读 · 2018年9月20日
Arxiv
6+阅读 · 2018年3月28日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关VIP内容
【ACL2020-Google】逆向工程配置的神经文本生成模型
专知会员服务
16+阅读 · 2020年4月20日
相关资讯
免费!Google Colab现已支持英伟达T4 GPU
新智元
5+阅读 · 2019年4月25日
深度学习开发必备开源框架
九章算法
12+阅读 · 2018年5月30日
keras系列︱深度学习五款常用的已训练模型
数据挖掘入门与实战
10+阅读 · 2018年3月27日
2017年四巨头的深度学习框架之战,你支持谁?
全球人工智能
6+阅读 · 2017年12月29日
一招检验10大深度学习框架哪家强!
深度学习世界
3+阅读 · 2017年9月14日
Caffe 深度学习框架上手教程
黑龙江大学自然语言处理实验室
14+阅读 · 2016年6月12日
Top
微信扫码咨询专知VIP会员