Skip to content
MMdnn is a set of tools to help users inter-operate among different deep learning frameworks. E.g. model conversion and visualization. Convert models between Caffe, Keras, MXNet, Tensorflow, CNTK, PyTorch Onnx and CoreML.
Branch: master
Clone or download
rainLiuplus modify test_input_path (#619)
* modify test_input_path
Latest commit 784404f Mar 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Normalize the line ending to LF. (#539) Dec 28, 2018
mmdnn try to help #605 (#607) Mar 13, 2019
requirements Fix pytorch test (#617) Mar 12, 2019
tests modify test_input_path (#619) Mar 13, 2019
.gitattributes Update, etc. (#537) Dec 28, 2018
.gitignore Add a Visual Studio solution file. (#615) Mar 12, 2019
.travis.yml Split test case to reduce travis build time (#568) Jan 17, 2019 Update Jan 17, 2018
mmdnn.pyproj Add a Visual Studio solution file. (#615) Mar 12, 2019
setup.cfg Update, etc. (#537) Dec 28, 2018 fix coreml, tf parser init, mxnet bn (#598) Mar 3, 2019 Refine tests. (#553) Jan 8, 2019

MMdnn MMdnn

PyPi Version License Linux

A comprehensive, cross-framework solution to convert, visualize and diagnose deep neural network models. The "MM" in MMdnn stands for model management and "dnn" is an acronym for the deep neural network.

Major features

  • Find model

  • Conversion

    • We implement a universal converter to convert DNN models between frameworks, which means you can train on one framework and deploy on another.
  • Retrain

    • In the converter, we can generate some training/inference code snippet to simplify the retrain/evaluate work.
  • Deployment

    • We provide some guidelines to help you deploy your models to another hardware platform.

    • We provide a guide to help you accelerate inference with TensorRT.

Related Projects

Microsoft Research Asia (MSRA) and Microsoft Search Technology Center Asia (STCA) have released some projects to advance the state-of-art technology:

  • Open Platform for AI (OpenPAI): an open source platform that provides complete AI model training and resource management capabilities. It is easy to extend and supports on-premise, cloud and hybrid environments in various scale.
  • Neural Network Intelligence (NNI): an open source AutoML toolkit for neural architecture search and hyper-parameter tuning.

We encourage researchers, developers and students to leverage such projects to boost their Deep Learning / AI productivity.


Install manually

You can get a stable version of MMdnn by

pip install mmdnn

And make sure to have Python installed or you can try the newest version by

pip install -U git+

Install with docker image

MMdnn provides a docker image, which packages MMdnn and Deep Learning frameworks that we support as well as other dependencies. You can easily try the image with the following steps:

  1. Install Docker Community Edition(CE)

    Learn more about how to install docker

  2. Pull MMdnn docker image

    docker pull mmdnn/mmdnn:cpu.small
  3. Run image in an interactive mode

    docker run -it mmdnn/mmdnn:cpu.small


Model Conversion

Across the industry and academia, there are a number of existing frameworks available for developers and researchers to design a model, where each framework has its own network structure definition and saving model format. The gaps between frameworks impede the inter-operation of the models.

We provide a model converter to help developers convert models between frameworks through an intermediate representation format.

Support frameworks

[Note] You can click the links to get detail README of each framework

Tested models

The model conversion between currently supported frameworks is tested on some ImageNet models.

Models Caffe Keras TensorFlow CNTK MXNet PyTorch CoreML ONNX
VGG 19
Inception V1
Inception V3
Inception V4 o
ResNet V1 × o
ResNet V2
MobileNet V1 × o
MobileNet V2 × o
Xception o ×
NASNet x o x
voc FCN


One command to achieve the conversion. Using TensorFlow ResNet V2 152 to PyTorch as our example.

$ mmdownload -f tensorflow -n resnet_v2_152 -o ./
$ mmconvert -sf tensorflow -in imagenet_resnet_v2_152.ckpt.meta -iw imagenet_resnet_v2_152.ckpt --dstNodeName MMdnn_Output -df pytorch -om tf_resnet_to_pth.pth


On-going frameworks

  • Torch7 (help wanted)
  • Chainer (help wanted)

On-going Models

  • Face Detection
  • Semantic Segmentation
  • Image Style Transfer
  • Object Detection
  • RNN

Model Visualization

You can use the MMdnn model visualizer and submit your IR json file to visualize your model. In order to run the commands below, you will need to install requests, keras, and TensorFlow using your favorite package manager.

Use the Keras "inception_v3" model as an example again.

  1. Download the pre-trained models
$ mmdownload -f keras -n inception_v3
  1. Convert the pre-trained model files into an intermediate representation
$ mmtoir -f keras -w imagenet_inception_v3.h5 -o keras_inception_v3
  1. Open the MMdnn model visualizer and choose file keras_inception_v3.json



Official Tutorial

Users' Examples


Intermediate Representation

The intermediate representation stores the network architecture in protobuf binary and pre-trained weights in NumPy native format.

[Note!] Currently the IR weights data is in NHWC (channel last) format.

Details are in ops.txt and graph.proto. New operators and any comments are welcome.


We are working on other frameworks conversion and visualization, such as PyTorch, CoreML and so on. We're investigating more RNN related operators. Any contributions and suggestions are welcome! Details in Contribution Guideline.


Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to and actually do, grant us the rights to use your contribution. For details, visit

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact with any additional questions or comments.


Cheng CHEN (Microsoft Research Asia): Project Manager; Caffe, CNTK, CoreML Emitter, Keras, MXNet, TensorFlow

Jiahao YAO (Peking University): CoreML, MXNet Emitter, PyTorch Parser; HomePage

Ru ZHANG (Chinese Academy of Sciences): CoreML Emitter, DarkNet Parser, Keras, TensorFlow frozen graph Parser; Yolo and SSD models; Tests

Yuhao ZHOU (Shanghai Jiao Tong University): MXNet

Tingting QIN (Microsoft Research Asia): Caffe Emitter

Tong ZHAN (Microsoft): ONNX Emitter

Qianwen WANG (Hong Kong University of Science and Technology): Visualization


Thanks to Saumitro Dasgupta, the initial code of caffe -> IR converting is references to his project caffe-tensorflow.

You can’t perform that action at this time.