Github 项目推荐 | 微软开源 MMdnn,模型可在多框架间转换
近期,微软开源了 MMdnn,这是一套能让用户在不同深度学习框架间做相互操作的工具。比如,模型的转换和可视化,并且可以让模型在 Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch 和 CoreML 之间转换。
Github:https://github.com/Microsoft/MMdnn
MMdnn 中的「MM」代表模型管理,「dnn」的意思是深度神经网络。它可以将由一个框架训练的 DNN 模型转换到其他框架里,其主要的特点如下:
- Model File Converter 在不同框架间转换 DNN 模型。
- Model Code Snippet Generator 为框架生成训练代码
- Model Visualization DNN 网络结构和框架参数可视化
- Model compatibility testing(正在开发中)
安装
开发者可以从以下链接获得 MMdnn 的稳定版本:
pip install https://github.com/Microsoft/MMdnn/releases/download/0.1.3/mmdnn-0.1.3-py2.py3-none-any.whl
或者尝试下最新的版本:
pip install -U git+https://github.com/Microsoft/MMdnn.git@master
特征
模型转换
整个工业界和学术界有很多现成的框架供开发人员和研究人员参考和使用,每个框架都有各自的网络结构定义和模型存储格式。框架之间的差异阻碍了模型之间的相互操作。
MMdnn 提供一个模型转换器,用于帮助开发者在不同框架之间通过中间格式转换模型。
支持的框架:
- Caffe
- Keras
- MXNet
- Tensorflow (Experimental) (Highly recommend you read the README of tensorflow firstly)
- Microsoft Cognitive Toolkit (CNTK) (Destination only)
- PyTorch (Destination only)
- CoreML (Experimental, Destination only)
测试的模型
官方用 ImageNet 模型测试了目前已经支持的框架的模型转换功能。
在测试的框架
- PyTorch (Source)
- CNTK (Source)
- Caffe2
- ONNX
在测试的模型
- RNN
- Image Style Transfer
- Object Detection
模型可视化
你可以使用 MMdnn 模型可视化器并且提交 IR json 文件来可视化你的模型。在运行下面的命令行之前,你需要用你最喜欢的包管理器安装 Keras、Tensorflow 和相关的请求。
用 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.打开 Open the MMdnn model visualizer 然后选择文件 keras_inception_v3.json
详细说明和示例请参照 MMdnn 官方 Github 页面:
https://github.com/Microsoft/MMdnn
- 【一起学Python】STEAM游戏评测爬虫
- Open Judge 2750 鸡兔同笼
- POJ 1017 Packets
- Hadoop离线数据分析平台实战——380MapReduce程序优化Hadoop离线数据分析平台实战——380MapReduce程序优化
- 配置远程访问Jupyter+腾讯云超划算活动上车
- HDU 4256 The Famous Clock
- ZOJ 1403&&HDU 1015 Safecracker【暴力】
- Torch7搭建卷积神经网络详细教程
- 爬虫入门到精通-HTTP协议的讲解
- 批量替换文件名和文本文件内容mac
- 抓取手机app的数据(摩拜单车)
- Hadoop离线数据分析平台实战——520项目总结Hadoop离线数据分析平台实战——520项目总结
- 爬虫入门到精通-mongodb的基本使用
- 拒绝撕逼,用数据来告诉你选择器到底哪家强
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- java入门019~springboot批量导入excel数据到mysql
- Java点餐系统和点餐小程序新加微信消息推送功能
- Java点餐系统和点餐小程序新加排号等位功能
- IDEA上给文件添加姓名,日期,版本号
- matlab机器人工具箱安装与卸载
- 浅谈Linux下修改/设置环境变量JAVA_HOME的方法
- Linux服务器配置多个svn仓库流程详解
- linux服务器显卡崩溃解决方案
- LINUX查看进程的4种方法(小结)
- Linux下的多线程编程实例解析
- CentOS使用expect批量远程执行脚本和命令
- Centos8最小化部署安装OpenStack Ussuri的详细教程
- 详解Xshell 常见问题及相关配置
- linux安装部署ftp图片服务器的实现方法
- Centos7配置fastdfs和nginx分布式文件存储系统实现过程解析