zoukankan      html  css  js  c++  java
  • Python神经网络集成技术Guide指南

    Python神经网络集成技术Guide指南

    本指南将介绍如何加载一个神经网络集成系统并从Python运行推断。
    提示

    所有框架的神经网络集成系统运行时接口都是相同的,因此本指南适用于所有受支持框架(包括TensorFlow、PyTorch、Keras和TorchScript)中的模型。

    打包神经网络集成系统             

    有关如何在所有支持的框架中创建Neuropod模型的示例,请参见基本介绍指南。             

    打包一个神经网络集成系统

    from neuropod.loader import load_neuropod

    neuropod = load_neuropod(PATH_TO_MY_MODEL)

    还可以使用load_ernood作为上下文管理器:

    from neuropod.loader import load_neuropod

    with load_neuropod(PATH_TO_MY_MODEL) as neuropod:

        # Do something here

    Pass

    选项             

    还可以在加载模型时提供运行时选项。             

    要选择在哪个设备上运行模型,可以提供一个visible_gpu参数。             

    这是这个神经网络集成系统应该运行的GPU的索引(如果有的话)。可以是无整数,也可以是非负整数。将此设置为“无”将尝试在CPU上运行此模型。

    # Run on CPU

    neuropod = load_neuropod(PATH_TO_MY_MODEL, visible_gpu=None)

    # Run on the second GPU

    neuropod = load_neuropod(PATH_TO_MY_MODEL, visible_gpu=1)

    获取模型的输入和输出             

    模型的输入和输出通过输入和输出属性可用。

    with load_neuropod(PATH_TO_MY_MODEL) as neuropod:

        # This is a list of dicts containing the "name", "dtype", and "shape"

        # of the input

    print(neuropod.inputs, neuropod.outputs)

    推论             

    模型的推理方法用于运行推理。此方法的输入是将输入名称映射到值的dict。这必须与加载模型的neuropod配置中的输入规范匹配。

    提示

    这个dict中的所有键必须是字符串,所有值必须是numpy数组。

    infer的输出是将输出名称映射到值的dict。对其进行检查,以确保其与已加载模型的neuropod配置中的规范匹配。这个dict中的所有键都是字符串,所有值都是numpy数组。

    x = np.array([1, 2, 3, 4])

    y = np.array([5, 6, 7, 8])

    with load_neuropod(ADDITION_MODEL_PATH) as neuropod:

      results = neuropod.infer({"x": x, "y": y})

      # array([6, 8, 10, 12])

      print results["out"]

    序列化

    import numpy as np

    from neuropod import neuropod_native

    # An array to serialize

    tensor = np.arange(5)

    # Convert a numpy array to a NeuropodTensor and serialize it

    serialized_bytes = neuropod_native.serialize(tensor)

    # Deserialize a string of bytes to a NeuropodTensor

    # (and return it as a numpy array)

    deserialized = neuropod_native.deserialize(serialized_bytes)

    # array([0, 1, 2, 3, 4])

    print(deserialized)

    序列化代码在NUMPY数组和C++ NoopPotoStor对象之间转换(以零拷贝方式)。然后,使用C++序列化功能来序列化/反序列化。

    提示

    序列化和反序列化工作在Python和C++之间。这意味着可以在C++中序列化张量,在Python中反序列化,反之亦然。

    Warning

    这个API的目标是支持临时序列化。不能保证向后兼容,因此此API不应用于数据的长期存储。

  • 相关阅读:
    apply 无循环拼接数组
    匿名函数自调的三种方法
    移动元素时,translate要比margin好
    Tesseract库原理分析
    [转]基于OCR的图片字符识别可行性研究
    [转]C&C++图形图像处理开源库
    [转]OCR识别的开源分析
    [转]众多OCR软件
    [转]常用OCR软件介绍
    [转]浅谈OCR之Tesseract
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/13138917.html
Copyright © 2011-2022 走看看