本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
有关将 Chainer 转换为 ONNX,然后加载到 MXNet 的教程
ONNX 概述
开放神经网络交换
本教程介绍如何将带 Conda 的深度学习 AMI 与 ONNX 结合使用。通过执行以下步骤,您可以训练模型或从一个框架中加载预先训练的模型,将此模型导出为 ONNX,然后将此模型导入到另一个框架中。
ONNX 先决条件
要使用此 ONNX 教程,您必须有权访问带 Conda 的深度学习 AMI 版本 12 或更高版本。有关如何开始使用带 Conda 的深度学习 AMI 的更多信息,请参阅 带 Conda 的深度学习 AMI。
重要
这些示例使用可能需要多达 8 GB 内存(或更多)的函数。请务必选择具有足量内存的实例类型。
使用带 Conda 的深度学习 AMI 来启动终端会话以开始以下教程。
将 Chainer 模型转换为 ONNX,然后将模型加载到 MXNet 中
首先,激活 Chainer 环境:
$
source activate chainer_p36
使用文本编辑器创建一个新文件,并在脚本中使用以下程序来从 Chainer Model Zoo 中提取模型,然后将它导出为 ONNX 格式。
import numpy as np import chainer import chainercv.links as L import onnx_chainer # Fetch a vgg16 model model = L.VGG16(pretrained_model='imagenet') # Prepare an input tensor x = np.random.rand(1, 3, 224, 224).astype(np.float32) * 255 # Run the model on the data with chainer.using_config('train', False): chainer_out = model(x).array # Export the model to a .onnx file out = onnx_chainer.export(model, x, filename='vgg16.onnx') # Check that the newly created model is valid and meets ONNX specification. import onnx model_proto = onnx.load("vgg16.onnx") onnx.checker.check_model(model_proto)
在您运行此脚本后,您将在同一目录中看到新创建的 .onnx 文件。
现在您有一个 ONNX 文件,可以将其与以下示例结合使用来尝试运行推理: