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指南的更多相关文章

  1. PyTorch神经网络集成技术

    PyTorch神经网络集成技术 create_python_neuropod 将任意python代码打包为一个neurood包. create_python_neuropod( neuropod_pa ...

  2. TorchScript神经网络集成技术

    TorchScript神经网络集成技术 create_torchscript_neuropod 将TorchScript模型打包为neuropod包. create_torchscript_neuro ...

  3. Keras神经网络集成技术

    Keras神经网络集成技术 create_keras_neuropod 将Keras模型打包为神经网络集成包.目前,上文已经支持TensorFlow后端. create_keras_neuropod( ...

  4. 深度学习框架集成平台C++ Guide指南

    深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...

  5. python的PEP8 代码风格指南

    PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...

  6. 转:Google技术开发指南:给大学生自学的建议

    原文来自于:http://blog.jobbole.com/80621/ 技术开发指南 想要成为成功的软件工程师,必须拥有坚实的计算机科学的基础.本指南针对大学生,给出一条自学途径,让学生以科班和非科 ...

  7. neurosolutions 人工神经网络集成开发环境 keras

    人工神经网络集成开发环境 :  http://www.neurosolutions.com/ keras:   https://github.com/fchollet/keras 文档    http ...

  8. 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码

    Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...

  9. 3.Python编程语言基础技术框架

    3.Python编程语言基础技术框架 3.1查看数据项数据类型 type(name) 3.2查看数据项数据id id(name) 3.3对象引用 备注Python将所有数据存为内存对象 Python中 ...

随机推荐

  1. Python中os模块、csv模块和xlrd模块的使用

    目录 os模块的使用 open("test.txt","mode") 读取文件中的内容 f.read() f.readline(size) f.readline ...

  2. Intel汇编程序设计-整数算术指令(中)

    7.3  移位和循环移位的应用 7.3.1  多双字移位 要对扩展精度整数(长整数)进行移位操作,可把它划分为字节数组.字数组或双字数组,然后再对该数组进行移位操作.在内存中存储数字时通常采用的方式是 ...

  3. 【python】Leetcode每日一题-直方图的水量(接雨水)

    [python]Leetcode每日一题-直方图的水量(接雨水) [题目描述] 给定一个直方图(也称柱状图),假设有人从上面源源不断地倒水,最后直方图能存多少水量?直方图的宽度为 1. 上面是由数组 ...

  4. 通过例子分析MVVM

    通过一个简单的计数器例子分析MVVM. 代码 demo2.html <!DOCTYPE html> <html lang="en"> <head> ...

  5. layui框架下如何给select的option选项赋值

    后端返回数据格式 axios方法执行成功后返回的数据格式如下图 前端下拉框 <div class="layui-form-item"> <label class= ...

  6. Mybatis学习之自定义持久层框架(四) 自定义持久层框架:生产sqlSession

    前言 上一回我们完成了数据库配置文件的读取和解析工作,有了这些准备工作,我们就可以与数据库创建连接和会话了,所谓sqlSession就是数据库的会话,一切增删查改操作都是在与数据库的会话中完成,下面我 ...

  7. 如何解决 shell 脚本重复执行的问题

    在开发过程中,经常会使用shell脚本去完成定时备份的任务,普遍的做法是通过系统的定时任务定时执行备份脚本 设想这样一种场景,本次备份时间到了,自动执行备份脚本,如果备份比较耗时的话,会一直持续到下一 ...

  8. Spring Cloud Gateway之动态路由(数据库版)

    1.实现动态路由的关键是RouteDefinitionRepository接口,该接口存在一个默认实现(InMemoryRouteDefinitionRepository) 通过名字我们应该也知道该实 ...

  9. CAS的理解

    CAS(CompareAndSweep)工作方式 ​ CAS是乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被 ...

  10. Android面试必问!View 事件分发机制,看这一篇就够了!

    在 Android 开发当中,View 的事件分发机制是一块很重要的知识.不仅在开发当中经常需要用到,面试的时候也经常被问到. 如果你在面试的时候,能把这块讲清楚,对于校招生或者实习生来说,算是一块不 ...