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

在推理中将 CNTK 与 ONNX 模型配合使用

如何在推理中将 ONNX 模型与 CNTK 配合使用

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

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

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

  2. 使用文本编辑器创建一个新文件,并在脚本中使用以下程序以在 CNTK 中打开 ONNX 格式文件。

    import cntk as C # Import the Chainer model into CNTK via CNTK's import API z = C.Function.load("vgg16.onnx", device=C.device.cpu(), format=C.ModelFormat.ONNX) print("Loaded vgg16.onnx!")

    在运行此脚本后,CNTK 将加载模型。

  3. 您还可以尝试使用 CNTK 运行推理。首先,下载一张哈士奇的照片。

    $ curl -O https://upload.wikimedia.org/wikipedia/commons/b/b5/Siberian_Husky_bi-eyed_Flickr.jpg
  4. 接下来,下载将使用此模型的类的列表。

    $ curl -O https://gist.githubusercontent.com/yrevar/6135f1bd8dcf2e0cc683/raw/d133d61a09d7e5a3b36b8c111a8dd5c4b5d560ee/imagenet1000_clsid_to_human.pkl
  5. 编辑先前创建的脚本以包含以下内容。此新版本将使用哈士奇的图片,得到一个预测结果,然后在类文件中查找,返回一个预测结果。

    import cntk as C import numpy as np from PIL import Image from IPython.core.display import display import pickle # Import the model into CNTK via CNTK's import API z = C.Function.load("vgg16.onnx", device=C.device.cpu(), format=C.ModelFormat.ONNX) print("Loaded vgg16.onnx!") img = Image.open("Siberian_Husky_bi-eyed_Flickr.jpg") img = img.resize((224,224)) rgb_img = np.asarray(img, dtype=np.float32) - 128 bgr_img = rgb_img[..., [2,1,0]] img_data = np.ascontiguousarray(np.rollaxis(bgr_img,2)) predictions = np.squeeze(z.eval({z.arguments[0]:[img_data]})) top_class = np.argmax(predictions) print(top_class) labels_dict = pickle.load(open("imagenet1000_clsid_to_human.pkl", "rb")) print(labels_dict[top_class])
  6. 然后运行脚本,您应看到一个如下所示的结果:

    248 Eskimo dog, husky