1. Using The Python API
以下部分重点介绍了可以使用Python API执行的TensorRT用户目标和任务。这些部分专注于使用Python API而不使用任何框架。 “样品支持指南”中提供了更多详细信息,并在适当情况下链接到下面。 假设您从训练有素的模型开始。本章将介绍使用TensorRT的以下必要步骤:
- 从模型中创建TensorRT网络定义
- 调用TensorRT构建器以从网络创建优化的运行时引擎
- 序列化和反序列化引擎,以便在运行时快速重新创建
- 使用数据为引擎提供执行推理
Python API vs C++ API
从本质上讲,C ++ API和Python API在支持您的需求方面应该完全相同。 Python API的主要优点是数据预处理和后处理易于使用,因为您可以使用各种库,如NumPy和SciPy。
C ++ API应该用于安全性很重要的情况,例如汽车行业。有关C ++ API的更多信息,请参阅使用C ++ API使用TensorRT。
有关如何使用Python优化性能的更多信息,请参阅如何优化我的Python性能?来自TensorRT最佳实践指南。
1.1. Importing TensorRT Into Python
- Import TensorRT:
import tensorrt as trt
- 实现日志记录界面,TensorRT通过该界面报告错误,警告和信息性消息。以下代码显示了如何实现日志记录界面。在这种情况下,我们已经抑制了信息性消息,并仅报告警告和错误。 TensorRT Python绑定中包含一个简单的记录器。
TRT_LOGGER = trt.Logger(trt.Logger.WARNING)
1.2. Creating A Network Definition In Python
使用TensorRT进行推理的第一步是从您的模型创建TensorRT网络。实现这一目标的最简单方法是使用TensorRT解析器库导入模型(请参阅使用Python在Parser中导入模型,使用Python从Caffe导入,使用Python从TensorFlow导入,以及使用Python从ONNX导入),这支持以下格式的序列化模型:
- Caffe (both BVLC and NVCaffe)
- ONNX 1.0 and 1.1, and
- UFF (used for TensorFlow)
另一种方法是使用TensorRT网络API直接定义模型(请参阅使用Python API从头开始创建网络定义)。这要求您进行少量API调用以定
注意:TensorRT Python API并非适用于所有平台。有关更多信息,请参阅TensorRT支持列表
1.2.1. Creating A Network Definition From Scratch Using The Python API
创建网络时,必须首先定义引擎并为推理创建构建器对象。 Python API用于从Network API创建网络和引擎。网络定义参考用于向网络添加各种层。有关使用Python API创建网络和引擎的更多信息,请参阅使用PyTorch和Python示例的TensorRT的“Hello World”。
以下代码说明了如何使用Input,Convolution,Pooling,FullyConnected,Activation和SoftMax层创建简单网络。
# Create the builder and network
with trt.Builder(TRT_LOGGER) as builder, builder.create_network() as network:
# Configure the network layers based on the weights provided. In this case, the weights are imported