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?

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

  1. Tensorflow【实战Google深度学习框架】TensorFlow模型的保存与恢复加载

    我们使用TensorFlow进行模型的训练,训练好的模型需要保存,预测阶段我们需要将模型进行加载还原使用,这就涉及TensorFlow模型的保存与恢复加载. 总结一下Tensorflow常用的模型保存 ...

  2. 漫画:我用深度学习框架画下女朋友最美的脸

    这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了. 阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属.这也得益于 PyTorch 的易学易用,大多数人第一次使用 PyTorch ...

  3. 热度直逼TensorFlow的深度学习框架,我用它画下女朋友最美的脸

    这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了. 阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属.这也得益于 PyTorch 的易学易用,大多数人第一次使用 PyTorch ...

  4. python画漫画_漫画:我用深度学习框架画下女朋友最美的脸

    原标题:漫画:我用深度学习框架画下女朋友最美的脸 这不,又一个程序员为爱变身灵魂画手,看得我都想学画画了. 阿华是幸运的,因为他找到了对的方法,事半功倍,最终有情人终成眷属.这也得益于 PyTorch ...

  5. 独家 | ​数据科学家必知的五大深度学习框架!(附插图)

    作者:Pulkit Sharma 翻译:陈之炎 校对:丁楠雅 本文约3900字,建议阅读10+分钟. 本文为大家分析并比较五种非常有用的深度学习框架的优点及应用. 概述 从出道起,我就一直是一名程序员 ...

  6. DL-5 深度学习框架的对比

    在深度学习领域的五大巨头里,它们都各自力挺一种深度学习框架:像谷歌有自家的TensorFlow.Facebook有Torch.百度有Paddle Paddle.微软有CNTK.而亚马逊的AWS则有MX ...

  7. 人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...

    号外!号外! 现在,AIZOO开源PyTorch.TensorFlow.MXNet.Keras和Caffe五大主流深度学习框架的人脸检测模型和代码啦! 先附上Github链接为敬. https://g ...

  8. Brain:一种用于阿尔兹海默症(AD)分类的可解释的深度学习框架

    <本文同步发布于"脑之说"微信公众号,欢迎搜索关注~~> 阿尔茨海默病是全球范围内痴呆症的主要原因,随着人口老龄化,其发病率负担日益加重,可能超过诊断和管理能力.目前的 ...

  9. 构建深度学习框架运行平台

    构建深度学习框架运行平台 将为TensorFlow.PyTorch和TorchScript之外的元素构建一个简单的深度学习框架运行平台模型.将展示如何从Python和C++运行推理. 打包和推断接口还 ...

最新文章

  1. 10 行代码玩转 NumPy!
  2. Python2.7+selenium2自动化测试环境搭建
  3. UGUI的text赋值问题-速度
  4. Gartner:2020年企业中无“云”战略将极为罕见
  5. python每秒20个请求_使用Python每秒百万个请求
  6. mysql 8.0.11-Windows (x86, 64-bit)下载地址与安装教程
  7. Swift高速入门之函数
  8. 安全界的硬核盛会要来了!2020北京网络安全大会倒计时100天
  9. 剑指offer面试题32 - II. 从上到下打印二叉树 II(二叉树)(BFS)
  10. 5G催化、VR回春,千亿行业洗牌重来
  11. C语言关键字浅析-char
  12. matlab:Matlab基础教程 第一章 MATLAB简介 第二章 Matlab的基本使用方法
  13. 最强大脑《智行营救》
  14. Vue+ elementui 布局混乱
  15. 斐波那契凤尾————斐波那契数列、打表
  16. POJ3107 Godfather树的重心
  17. MongoDB使用中的一些问题
  18. lora网关软件设计_LoRa 物联网集成开发套件
  19. 【js】:js中的确认框,提示框和确认框的使用
  20. ClickHouse与ES的优劣对比

热门文章

  1. SharePoint Server 2007 页面模型
  2. IDEA打包出现Unable to find main class
  3. java绘图之Graphics类
  4. 洛谷 P1966 火柴排队
  5. TokuDB vs Innodb 基准测试对比
  6. Vue轮播图插件---Vue-Awesome-Swiper
  7. 【青少年编程竞赛交流】02月份微信图文索引
  8. 什么是自组织特征映射网络?
  9. Matlab与线性代数 -- 对角矩阵
  10. cad的文字嵌入线条_带你玩转CAD!