本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
有关将 Chainer 转换为 ONNX,然后加载到 CNTK 的教程
注意
从 v28 版本开始,Amazon Deep Learning AMI 中将不再包含 CNTK、Caffe、Caffe2 和 Theano Conda 环境。包含这些环境的先前版本的 Amazon Deep Learning AMI 将继续可用。但是,只有在开源社区针对这些框架发布安全修补程序时,我们才会为这些环境提供更新。
ONNX 概述
开放神经网络交换
本教程向你展示了如何在 ONNX 上使用 Conda 的深度学习 AMI。通过执行以下步骤,您可以训练模型或从一个框架中加载预先训练的模型,将此模型导出为 ONNX,然后将此模型导入到另一个框架中。
ONNX 先决条件
要使用此 ONNX 教程,你必须有权访问装有 Conda 版本 12 或更高版本的深度学习 AMI。有关如何使用 Conda 开始使用深度学习 AMI 的更多信息,请参阅使用 Conda 进行深度学习 AMI。
重要
这些示例使用可能需要多达 8 GB 内存(或更多)的函数。请务必选择具有足量内存的实例类型。
使用 Conda 启动深度学习 AMI 的终端会话,开始以下教程。
将 Chainer 模型转换为 ONNX,然后将模型加载到 CNTK 中
首先,激活 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 文件,可以将其与以下示例结合使用来尝试运行推理: