本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
有关将 Apache MXNet 转换为 ONNX,然后加载到 CNTK 的教程
注意
从 v28 版本开始, Amazon Deep Learning AMI 中将不再包含 CNTK、Caffe、Caffe2 和 Theano Conda 环境。包含这些环境 Amazon Deep Learning AMI 的先前版本将继续可用。但是,只有在开源社区针对这些框架发布安全修补程序时,我们才会为这些环境提供更新。
ONNX 概述
开放神经网络交换
本教程介绍如何将带 Conda 的深度学习 AMI 与 ONNX 结合使用。通过执行以下步骤,您可以训练模型或从一个框架中加载预先训练的模型,将此模型导出为 ONNX,然后将此模型导入到另一个框架中。
ONNX 先决条件
要使用此 ONNX 教程,您必须有权访问带 Conda 的深度学习 AMI 版本 12 或更高版本。有关如何开始使用带 Conda 的深度学习 AMI 的更多信息,请参阅 带 Conda 的深度学习 AMI。
重要
这些示例使用可能需要多达 8 GB 内存(或更多)的函数。请务必选择具有足量内存的实例类型。
使用带 Conda 的深度学习 AMI 来启动终端会话以开始以下教程。
将 Apache MXNet(孵化)模型转换为 ONNX,然后将模型加载到 CNTK 中
如何从 Apache MXNet(孵化)中导出模型
您可以将最新的 MXNet 构建版本安装到带 Conda 的深度学习 AMI 上的任一或两个 MXNet Conda 环境中。
-
(适用于 Python 3 的选项)- 激活 Python 3 MXNet 环境:
$
source activate mxnet_p36 -
(适用于 Python 2 的选项)- 激活 Python 2 MXNet 环境:
$
source activate mxnet_p27
-
-
其余步骤假定您使用的是
mxnet_p36
环境。 -
下载模型文件。
curl -O https://s3.amazonaws.com/onnx-mxnet/model-zoo/vgg16/vgg16-symbol.json curl -O https://s3.amazonaws.com/onnx-mxnet/model-zoo/vgg16/vgg16-0000.params
-
要将模型文件从 MXNet 导出为 ONNX 格式,使用文本编辑器创建一个新文件,并在脚本中使用以下程序。
import numpy as np import mxnet as mx from mxnet.contrib import onnx as onnx_mxnet converted_onnx_filename='vgg16.onnx' # Export MXNet model to ONNX format via MXNet's export_model API converted_onnx_filename=onnx_mxnet.export_model('vgg16-symbol.json', 'vgg16-0000.params', [(1,3,224,224)], np.float32, converted_onnx_filename) # Check that the newly created model is valid and meets ONNX specification. import onnx model_proto = onnx.load(converted_onnx_filename) onnx.checker.check_model(model_proto)
您可能会看到一些警告消息,不过您目前可以安全地忽略它们。在您运行此脚本后,您将在同一目录中看到新创建的 .onnx 文件。
-
现在您有一个 ONNX 文件,可以将其与以下示例结合使用来尝试运行推理: