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不应用于数据的长期存储。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)