深度学习 AMI
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

有关将 Apache MXNet 转换为 ONNX,然后加载到 CNTK 的教程

ONNX 概述

开放神经网络交换 (ONNX) 是一种用于表示深度学习模型的开放格式。ONNX 受到 Amazon Web Services、Microsoft、Facebook 和其他多个合作伙伴的支持。您可以使用任何选定的框架来设计、训练和部署深度学习模型。ONNX 模型的好处是,它们可以在框架之间轻松移动。

本教程介绍如何将 采用 Conda 的 Deep Learning AMI 与 ONNX 结合使用。通过执行以下步骤,您可以训练模型或从一个框架中加载预先训练的模型,将此模型导出为 ONNX,然后将此模型导入到另一个框架中。

ONNX 先决条件

要使用此 ONNX 教程,您必须有权访问 采用 Conda 的 Deep Learning AMI 版本 12 或更高版本。有关如何开始使用 采用 Conda 的 Deep Learning AMI 的更多信息,请参阅 采用 Conda 的 Deep Learning AMI

重要

这些示例使用可能需要多达 8 GB 内存(或更多)的函数。请务必选择具有足量内存的实例类型。

使用 采用 Conda 的 Deep Learning AMI 启动终端会话以开始以下教程。

将 Apache MXNet(孵化)模型转换为 ONNX,然后将模型加载到 CNTK 中

如何从 Apache MXNet(孵化)中导出模型

您可以将最新的 MXNet 工作版本安装到您的 采用 Conda 的 Deep Learning AMI 上的任一或两个 MXNet Conda 环境。

    • (适用于 Python 3 的选项)- 激活 Python 3 MXNet 环境:

      $ source activate mxnet_p36
    • (适用于 Python 2 的选项)- 激活 Python 2 MXNet 环境:

      $ source activate mxnet_p27
  1. 其余步骤假定您使用的是 mxnet_p36 环境。

  2. 下载模型文件。

    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
  3. 要将模型文件从 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 文件。

  4. 现在您有一个 ONNX 文件,可以将其与以下示例结合使用来尝试运行推理: