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

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项目的引用。

原文发布于微信公众号 - AI科技大本营(rgznai100)

原文发表时间:2018-01-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

业界 | MXNet开放支持Keras,高效实现CNN与RNN的分布式训练

1873
来自专栏吕晟的专栏

机器学习库初探之 Caffe

Caffe 是一个清晰而高效的深度学习框架,其作者是博士毕业于 UC Berkeley 的贾扬清,目前在 Facebook 工作。Caffe 是纯粹的 C++/...

1.4K2
来自专栏企鹅号快讯

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

Microsoft/MMdnn:深度学习框架随心切换 学习深度学习的各位同学都希望自己的模型能在不同的深度学习框架之间随意转换,比如,斯坦福大学CVGL实验室的...

5995
来自专栏人工智能头条

详解TensorBoard如何调参

1013
来自专栏人工智能

使用10几行Python代码,快速建立视觉模型识别图像

视觉 进化的作用,让人类对图像的处理非常高效。 这里,我给你展示一张照片。 ? 如果我这样问你: 你能否分辨出图片中哪个是猫,哪个是狗? 你可能立即会觉得自己遭...

3989
来自专栏AI科技大本营的专栏

AI 技术讲座精选:如何在时间序列预测中使用LSTM网络中的时间步长

Keras中的长短期记忆(LSTM)网络支持时间步长。 这就引出这样一个问题:单变量时间序列的滞后观察是否可以用作LSTM的时间步长,这样做是否能改进预测性能...

4595
来自专栏深度学习之tensorflow实战篇

关于决策树ID3算法,熵,信息增益率的权威解释,稍后奉上python代码

决策树分类算法概述 决策树算法是从数据的属性(或者特征)出发,以属性作为基础,划分不同的类。 看了本书,叫知识发现,内容很好,果断扫描 这里...

3604
来自专栏木子昭的博客

sklearn数据集的获取与划分

获取sklearn本地的数据集 from sklearn.datasets import load_iris li = load_iris() print("...

4619
来自专栏吉浦迅科技

DIGITS

给大家介绍一个工具,叫做DIGITS。DIGITS是一个基于WEB UI交互式的深度学习训练系统。对于深度学习的初学者或数据科学家来说,这个工具能够为他们提供极...

3796
来自专栏人工智能

TensorFlow实战——图像分类神经网络模型

Learn how to classify images with TensorFlow 使用TensorFlow创建一个简单而强大的图像分类神经网络模型 by...

4136

扫码关注云+社区

领取腾讯云代金券