微软放大招-MMdnn开源了

Crq
Crq
Crq
417
文章
0
评论
2024年9月18日20:02:24
评论
5 3731字阅读12分26秒
摘要

近日,微软开源 MMdnn,可用于转换、可视化和诊断深度神经网络模型的全面、跨框架解决方案,目前支持 Caffe、Keras、MXNet、CNTK 等框架。


MMdnn 是一个用于转换、可视化和诊断深度神经网络模型的综合性、跨框架的解决方案。MMdnn 中的「MM」代表模型管理,「dnn」是「deep neural network」(深度神经网络)的缩写。

MMdnn 可将一个框架训练的 DNN 模型转换到其他框架可用。其主要特征包括:
模型文件转换器,转换 DNN 模型使之适合不同框架;
模型代码块生成器,生成适合不同框架的训练或推断代码块;
模型可视化,针对不同框架可视化 DNN 网络架构和参数;
模型兼容性测试(正在进行)。

安装

通过以下命令行获取稳定版的 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
模型转换

业界和学界存在大量现有框架,适合开发者和研究者来设计模型,每个框架具备自己的网络结构定义和模型保存格式。框架之间的差距阻碍了模型的交互操作。

我们提供一个模型转换器,帮助开发者通过中间表征格式转换模型,以适合不同框架。

支持框架

每个支持的框架都有详细的 README 文档,它们可以在以下conversion件夹找到。

地址:https://github.com/Microsoft/MMdnn/tree/master/mmdnn/conversion
Caffe
Keras
MXNet
TensorFlow(实验阶段,强烈建议先阅读 README)
Microsoft Cognitive Toolkit (CNTK)
PyTorch
CoreML(实验阶段)

测试模型

我们在部分 ImageNet 模型上对当前支持的框架间模型转换功能进行了测试。

正在测试的框架:
PyTorch
CNTK
Caffe2
ONNX
正在测试的模型:
RNN
图像风格迁移
目标检测

模型可视化

你可以使用 MMdnn 模型可视化工具(http://vis.mmdnn.com/),提交自己的 IR json 文件进行模型可视化。为了运行下面的命令行,你需要使用喜欢的包管理器安装 requests、Keras、TensorFlow。

使用 Keras inception_v3 模型作为示例。

1. 下载预训练模型:

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

2. 将预训练模型文件转换成中间表征格式:

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

3. 打开 MMdnn 模型可视化工具地址(http://mmdnn.eastasia.cloudapp.azure.com:8080/),选择文件 keras_inception_v3.json。

社区支持

本项目仍在继续开发与探索,它需要各位读者完善中间表征与支持的框架。因此,该项目的作者表示他非常希望有开发者能提供新的运算或扩展。

中间表征:中间表征在 protobuf 二进制文件中储存网络架构,在 NumPynative 格式中储存预训练权重。此外,目前 IR 权重数据使用的是 NHWC 格式。中间表征的细节请查看 ops.txt 和 graph.proto 文件。
框架:我们正在扩展到其它框架版本和可视化工具,例如 Caffe2、PyTorch 和 CoreML 等。此外,本项目也在积极开发 RNN 相关的操作方法。

使用案例

以下是该项目实现框架转换的基本案例,其中包括官方的教程和用户提供的各种案例,机器之心简要介绍了官方 Keras 到 CNTK 的转换教程。
官方教程:

Keras "inception_v3" to CNTK
用户案例:

MXNet "resnet 152 11k" to PyTorch
MXNet "resnext" to Keras
Tensorflow "resnet 101" to PyTorch
Tensorflow "mnist mlp model" to CNTK
Tensorflow "Inception_v3" to MXNet
Caffe "AlexNet" to Tensorflow
Caffe "inception_v4" to Tensorflow
Caffe "VGG16_SOD" to Tensorflow
Caffe "Squeezenet v1.1" to CNTK

Keras「inception_v3」模型到 CNTK 的转换
1. 安装 Keras 和 CNTK
pip install keras
pip install https://cntk.ai/PythonWheel/CPU-Only/cntk-2.3-cp27-cp27mu-linux_x86_64.whl

or

pip install
https://cntk.ai/PythonWheel/CPU-Only/cntk-2.3-cp35-cp35m-linux_x86_64.whl
2. 准备 Keras 模型

以下示例将首先下载预训练模型,然后使用简单的模型抽取器从 Keras 应用中获取模型,抽取器将抽取 Keras 模型架构和权重。

$ python -m mmdnn.conversion.examples.keras.extract_model -n inception_v3
Using TensorFlow backend.
Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels.h5
96075776/96112376 [============================>.] - ETA: 0s
.
.
.
Network structure is saved as [imagenet_inception_v3.json].
Network weights are saved as [imagenet_inception_v3.h5].

架构文件 imagenet_inception_v3.json 和权重文件 imagenet_inception_v3.h5 会下载至当前工作目录。

3. 将预训练模型文件转换为中间表征
$ python -m mmdnn.conversion._.convertToIR -f keras -d converted -n imagenet_inception_v3.json -w imagenet_inception_v3.h5
Using TensorFlow backend.
.
.
.
Network file [imagenet_inception_v3.json] is loaded successfully.
IR network structure is saved as [converted.json].
IR network structure is saved as [converted.pb].
IR weights are saved as [converted.npy].

以上的命令会将 imagenet_inception_v3.json 作为神经网络架构的描述文件,imagenet_inception_v3.h5 作为预训练权重。然后计算出中间表征文件 converted.json 用于可视化,计算出 converted.proto 和 converted.npy 以进一步转换为其它框架。

4. 转换 IR 文件为 CNTK 模型
$ python -m mmdnn.conversion._.IRToCode -f cntk -d converted_cntk.py -n converted.pb -w converted.npy
Parse file [converted.pb] with binary format successfully.
Target network code snippet is saved as [converted_cntk.py].

你将得到文件 converted_cntk.py,包括构建 Inception V3 网络的原始 CNTK 代码。

经过这三步,你已经将预训练 Keras Inception_v3 模型转换成 CNTK 网络文件 converted_cntk.py 和权重文件 converted.npy。你可以用这两个文件调整训练或推断。

5. 转存原始 CNTK 模型
$ python -m mmdnn.conversion.examples.cntk.imagenet_test -n converted_cntk -w converted.npy --dump cntk_inception_v3.dnn
.
.
.
CNTK model file is saved as [cntk_inception_v3.dnn], generated by [converted_cntk.py] and [converted.npy].

CNTK 可直接加载文件 cntk_inception_v3.dnn。

weinxin
我的微信
这是我的微信扫一扫
Crq
  • 本文由 发表于 2024年9月18日20:02:24
  • 转载请注明:https://www.cncrq.com/10783.html
教你在 Arch Linux 中设置日语环境 Linux教程

教你在 Arch Linux 中设置日语环境

在本教程中,我们将讨论如何在 Arch Linux 中设置日语环境。在其他类 Unix 操作系统中,设置日文布局并不是什么大不了的事情。你可以从设置中轻松选择日文键盘布局。然而,在 Arch Linu...
使用 Vundle 管理 Vim 插件 Linux教程

使用 Vundle 管理 Vim 插件

毋庸置疑,Vim 是一款强大的文本文件处理的通用工具,能够管理系统配置文件和编写代码。通过插件,Vim 可以被拓展出不同层次的功能。通常,所有的插件和附属的配置文件都会存放在 ~/.vim 目录中。由...
在 Linux 中纠正 Bash 命令拼写错误 Linux教程

在 Linux 中纠正 Bash 命令拼写错误

我知道你可以按下向上箭头来调出你运行过的命令,然后使用左/右键移动到拼写错误的单词,并更正拼写错误的单词,最后按回车键再次运行它,对吗?可是等等。还有一种更简单的方法可以纠正 GNU/Linux 中拼...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: