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不应用于数据的长期存储。
Python神经网络集成技术Guide指南的更多相关文章
- PyTorch神经网络集成技术
PyTorch神经网络集成技术 create_python_neuropod 将任意python代码打包为一个neurood包. create_python_neuropod( neuropod_pa ...
- TorchScript神经网络集成技术
TorchScript神经网络集成技术 create_torchscript_neuropod 将TorchScript模型打包为neuropod包. create_torchscript_neuro ...
- Keras神经网络集成技术
Keras神经网络集成技术 create_keras_neuropod 将Keras模型打包为神经网络集成包.目前,上文已经支持TensorFlow后端. create_keras_neuropod( ...
- 深度学习框架集成平台C++ Guide指南
深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...
- python的PEP8 代码风格指南
PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...
- 转:Google技术开发指南:给大学生自学的建议
原文来自于:http://blog.jobbole.com/80621/ 技术开发指南 想要成为成功的软件工程师,必须拥有坚实的计算机科学的基础.本指南针对大学生,给出一条自学途径,让学生以科班和非科 ...
- neurosolutions 人工神经网络集成开发环境 keras
人工神经网络集成开发环境 : http://www.neurosolutions.com/ keras: https://github.com/fchollet/keras 文档 http ...
- 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码
Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...
- 3.Python编程语言基础技术框架
3.Python编程语言基础技术框架 3.1查看数据项数据类型 type(name) 3.2查看数据项数据id id(name) 3.3对象引用 备注Python将所有数据存为内存对象 Python中 ...
随机推荐
- Android NDK工程的编译和链接以及使用gdb进行调试
前提条件:已经安装了JDK 6.0.android SDK.NDK r9和eclipsele4.2开发环境. 推荐下载Android开发的综合套件adt-bundle-windows-x86,再下载A ...
- Python中zipfile压缩文件模块的使用
目录 zipfile 压缩一个文件 解压文件 高级应用 利用 zipfile 模块破解压缩文件口令:Python脚本破解压缩文件口令 zipfile Python 中 zipfile 模块提供了对 z ...
- 5.PHP与Web页面交互
PHP与Web页面交互 PHP中提供了两种与Web页面交互的方法,一种是通过Web表单提交数据,另一种是通过URL参数传递. 表单提交用户名字和密码: <form name "form ...
- Github搜索语法
目录 使用 Github 进行邮件配置信息收集 使用Github进行数据库信息收集
- 学习Canvas绘图与动画基础 canvas入门(一)
一.创建canvas 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta char ...
- thinkphp 连接多个数据库(tp5.1为例)
1.config目录下添加数据库配置,内容跟原数据库配置一样就可以(数据库名改成连接的第二个数据库名) 2.连接部分代码: $db = Db::connect(config('database2.') ...
- C异常处理和C++异常处理的对比
每一种编译器实现异常处理的方式会有所不同,但是都是基于Windows的SEH异常处理.这里以MSC编译器为例. C异常处理 #include <Windows.h> int main(in ...
- OO_Unit2_多线程电梯
CSDN博客链接 一.第一次作业 1.需求分析 单部多线程傻瓜调度(FAFS)电梯 2.实现方案 输入接口解析 类似于Scanner,我们使用ElevatorInput进行阻塞式读取(第一次作业较简单 ...
- PHPcms v9.6.0 文件上传漏洞
title: PHPcms v9.6.0 文件上传漏洞 date: 2021-4-5 tags: 渗透测试,CVE漏洞复现,文件上传 categories: 渗透测试 CVE漏洞复现 文件上传 PHP ...
- 简单聊聊内存逃逸 | 剑指offer - golang
问题 简单讲讲golang的内存逃逸吗? 解析 什么是内存逃逸 在程序中,每个函数块都会有自己的内存区域用来存自己的局部变量(内存占用少).返回地址.返回值之类的数据,这一块内存区域有特定的结构和寻址 ...