您好,登錄后才能下訂單哦!
這篇“如何快速上手MMdnn”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何快速上手MMdnn”文章吧。
MMdnn 是微軟開源的一套幫助用戶在不同深度學(xué)習(xí)框架之間進行互操作的工具,包括模型轉(zhuǎn)換和可視化。目前支持在 Caffe、Keras、MXNet、Tensorflow、CNTK、PyTorch 和 CoreML 等框架之間進行模型轉(zhuǎn)換。
通過以下命令行獲取穩(wěn)定版的 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
業(yè)界和學(xué)界存在大量現(xiàn)有框架,適合開發(fā)者和研究者來設(shè)計模型,每個框架具備自己的網(wǎng)絡(luò)結(jié)構(gòu)定義和模型保存格式??蚣苤g的差距阻礙了模型的交互操作。
我們提供一個模型轉(zhuǎn)換器,幫助開發(fā)者通過中間表征格式轉(zhuǎn)換模型,以適合不同框架。
每個支持的框架都有詳細的 README 文檔,它們可以在以下conversion件夾找到。
我們在部分 ImageNet 模型上對當(dāng)前支持的框架間模型轉(zhuǎn)換功能進行了測試。
正在測試的框架: PyTorch CNTK Caffe2 ONNX 正在測試的模型: RNN 圖像風(fēng)格遷移 目標(biāo)檢測
你可以使用 MMdnn 模型可視化工具(http://vis.mmdnn.com/),提交自己的 IR json 文件進行模型可視化。為了運行下面的命令行,你需要使用喜歡的包管理器安裝 requests、Keras、TensorFlow。
使用 Keras inception_v3 模型作為示例。
\1. 下載預(yù)訓(xùn)練模型:
python -m mmdnn.conversion.examples.keras.extract_model -n inception_v3
\2. 將預(yù)訓(xùn)練模型文件轉(zhuǎn)換成中間表征格式:
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。
本項目仍在繼續(xù)開發(fā)與探索,它需要各位讀者完善中間表征與支持的框架。因此,該項目的作者表示他非常希望有開發(fā)者能提供新的運算或擴展。
中間表征:中間表征在 protobuf 二進制文件中儲存網(wǎng)絡(luò)架構(gòu),在 NumPynative 格式中儲存預(yù)訓(xùn)練權(quán)重。此外,目前 IR 權(quán)重數(shù)據(jù)使用的是 NHWC 格式。中間表征的細節(jié)請查看 ops.txt 和 graph.proto 文件。 框架:我們正在擴展到其它框架版本和可視化工具,例如 Caffe2、PyTorch 和 CoreML 等。此外,本項目也在積極開發(fā) RNN 相關(guān)的操作方法。
以下是該項目實現(xiàn)框架轉(zhuǎn)換的基本案例,其中包括官方的教程和用戶提供的各種案例,機器之心簡要介紹了官方 Keras 到 CNTK 的轉(zhuǎn)換教程。 官方教程:
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
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 模型
以下示例將首先下載預(yù)訓(xùn)練模型,然后使用簡單的模型抽取器從 Keras 應(yīng)用中獲取模型,抽取器將抽取 Keras 模型架構(gòu)和權(quán)重。
$ 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.h6 96075776/96112376 [============================>.] - ETA: 0s . . . Network structure is saved as [imagenet_inception_v3.json]. Network weights are saved as [imagenet_inception_v3.h6].
架構(gòu)文件 imagenet_inception_v3.json 和權(quán)重文件 imagenet_inception_v3.h6 會下載至當(dāng)前工作目錄。
3. 將預(yù)訓(xùn)練模型文件轉(zhuǎn)換為中間表征
$ python -m mmdnn.conversion._.convertToIR -f keras -d converted -n imagenet_inception_v3.json -w imagenet_inception_v3.h6 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 作為神經(jīng)網(wǎng)絡(luò)架構(gòu)的描述文件,imagenet_inception_v3.h6 作為預(yù)訓(xùn)練權(quán)重。然后計算出中間表征文件 converted.json 用于可視化,計算出 converted.proto 和 converted.npy 以進一步轉(zhuǎn)換為其它框架。
4. 轉(zhuǎn)換 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,包括構(gòu)建 Inception V3 網(wǎng)絡(luò)的原始 CNTK 代碼。
經(jīng)過這三步,你已經(jīng)將預(yù)訓(xùn)練 Keras Inception_v3 模型轉(zhuǎn)換成 CNTK 網(wǎng)絡(luò)文件 converted_cntk.py 和權(quán)重文件 converted.npy。你可以用這兩個文件調(diào)整訓(xùn)練或推斷。
5. 轉(zhuǎn)存原始 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。
以上就是關(guān)于“如何快速上手MMdnn”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。