层基类

ITensor

tensorrt.TensorLocation

数据的物理位置。

成员

DEVICE : 数据存储在设备上。

HOST : 数据存储在主机上。

tensorrt.TensorFormat

输入/输出张量的格式。

此枚举被插件和网络 I/O 张量使用。

有关数据格式的更多信息,请参阅 TensorRT 开发者指南中的主题“数据格式描述” (https://docs.nvda.net.cn/deeplearning/sdk/tensorrt-developer-guide/index.html)。

成员

LINEAR

行主序线性格式。

对于维度为 {N, C, H, W} 的张量,W 轴始终具有单位步幅,并且每个其他轴的步幅至少是下一个维度乘以下一个步幅的乘积。步幅与维度为 [N][C][H][W] 的 C 数组的步幅相同。

CHW2

双通道宽向量化行主序格式。

此格式绑定到 FP16。仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,内存布局等效于维度为 [N][(C+1)/2][H][W][2] 的 C 数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][c/2][h][w][c%2]。

HWC8

八通道格式,其中 C 填充为 8 的倍数。

此格式绑定到 FP16 和 BF16。仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,内存布局等效于维度为 [N][H][W][(C+7)/8*8] 的数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][h][w][c]。

CHW4

四通道宽向量化行主序格式。此格式绑定到 FP16 和 INT8。仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,内存布局等效于维度为 [N][(C+3)/4][H][W][4] 的 C 数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][c/4][h][w][c%4]。

CHW16

十六通道宽向量化行主序格式。

此格式绑定到 FP16。仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,内存布局等效于维度为 [N][(C+15)/16][H][W][16] 的 C 数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][c/16][h][w][c%16]。

CHW32

三十二通道宽向量化行主序格式。

此格式仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,内存布局等效于维度为 [N][(C+31)/32][H][W][32] 的 C 数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][c/32][h][w][c%32]。

DHWC8

八通道格式,其中 C 填充为 8 的倍数。

此格式绑定到 FP16 和 BF16,并且仅适用于维度 >= 4。

对于维度为 {N, C, D, H, W} 的张量,内存布局等效于维度为 [N][D][H][W][(C+7)/8*8] 的数组,其中张量坐标 (n, c, d, h, w) 映射到数组下标 [n][d][h][w][c]。

CDHW32

具有 3 个空间维度的三十二通道宽向量化行主序格式。

此格式绑定到 FP16 和 INT8。仅适用于维度 >= 4。

对于维度为 {N, C, D, H, W} 的张量,内存布局等效于维度为 [N][(C+31)/32][D][H][W][32] 的 C 数组,其中张量坐标 (n, d, c, h, w) 映射到数组下标 [n][c/32][d][h][w][c%32]。

HWC

非向量化通道最后格式。此格式绑定到 FP32、FP16、INT8、INT64 和 BF16,并且仅适用于维度 >= 3。

DLA_LINEAR

DLA 平面格式。行主序格式。沿 H 轴步进的步幅向上舍入为 64 字节。

此格式绑定到 FP16/Int8,并且仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,内存布局等效于维度为 [N][C][H][roundUp(W, 64/elementSize)] 的 C 数组,其中 elementSize 对于 FP16 为 2,对于 Int8 为 1,张量坐标 (n, c, h, w) 映射到数组下标 [n][c][h][w]。

DLA_HWC4

DLA 图像格式。通道最后格式。C 只能为 1、3、4。如果 C == 3,则将四舍五入为 4。沿 H 轴步进的步幅向上舍入为 32 字节。

此格式绑定到 FP16/Int8,并且仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,当 C 分别为 1、3、4 时,C’ 为 1、4、4,内存布局等效于维度为 [N][H][roundUp(W, 32/C’/elementSize)][C’] 的 C 数组,其中 elementSize 对于 FP16 为 2,对于 Int8 为 1,C’ 是四舍五入的 C。张量坐标 (n, c, h, w) 映射到数组下标 [n][h][w][c]。

HWC16

十六通道格式,其中 C 填充为 16 的倍数。此格式绑定到 FP16/INT8/FP8。仅适用于维度 >= 3。

对于维度为 {N, C, H, W} 的张量,内存布局等效于维度为 [N][H][W][(C+15)/16*16] 的数组,其中张量坐标 (n, c, h, w) 映射到数组下标 [n][h][w][c]。

DHWC

非向量化通道最后格式。此格式绑定到 FP32。仅适用于维度 >= 4。

class tensorrt.ITensor

INetworkDefinition 中的张量 。

变量:
  • namestr 张量名称。对于网络输入,名称由应用程序分配。对于作为层输出的张量,会分配一个默认名称,该名称由层名称后跟方括号中的输出索引组成。每个网络输入和输出张量都必须具有唯一的名称。

  • shapeDims 张量的形状。对于网络输入,形状由应用程序分配。对于网络输出,它基于层参数和层的输入计算得出。如果在网络中修改了张量大小或参数,则将重新计算所有相关张量的形状。此调用仅对网络输入张量合法,因为层输出张量的形状是根据层输入和参数推断出来的。

  • dtypeDataType 张量的数据类型。如果类型对于给定的张量无效,则类型不变。

  • broadcast_across_batchbool [已弃用] 在 TensorRT 10.0 中已弃用。由于隐式批次维度支持已移除,因此始终为 false。

  • locationTensorLocation 张量的存储位置。

  • is_network_inputbool 张量是否为网络输入。

  • is_network_outputbool 张量是否为网络输出。

  • dynamic_rangeTuple[float, float] [已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。包含动态范围的 [最小值,最大值] 的元组,如果未设置范围,则为 None

  • is_shapebool 张量是否为形状张量。

  • allowed_formatsint32 允许的 TensorFormat 候选集。这应该是一个整数,由一个或多个 TensorFormat 组成,通过位移后按位或运算组合。例如, 1 << int(TensorFormat.CHW4) | 1 << int(TensorFormat.CHW32)

get_dimension_name(self: tensorrt.tensorrt.ITensor, index: int) str

获取输入维度的名称。

参数:

index – 维度的索引。

返回值:

维度的名称,如果维度未命名,则为 null。

reset_dynamic_range(self: tensorrt.tensorrt.ITensor) None

[已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。撤消设置动态范围的效果。

set_dimension_name(self: tensorrt.tensorrt.ITensor, index: int, name: str) None

命名输入张量的维度。

将输入张量的运行时维度与符号名称关联。具有相同非空名称的维度在运行时必须相等。了解运行时维度的这种相等性可能有助于 TensorRT 优化器。运行时和构建时维度都可以命名。如果再次调用该函数,使用相同的索引,它将覆盖之前的名称。如果传递 None 作为名称,它将清除维度的名称。

例如,setDimensionName(0, “n”) 将符号名称“n”与前导维度关联。

参数:
  • index – 维度的索引。

  • name – 维度的名称。

set_dynamic_range(self: tensorrt.tensorrt.ITensor, min: float, max: float) bool

[已弃用] 在 TensorRT 10.1 中已弃用。已被显式量化取代。设置张量的动态范围。注意:建议改用 tensor.dynamic_range = (min, max)

参数:
  • min – 动态范围的最小值。

  • max – 动态范围的最大值。

返回值:

如果成功设置范围,则为 true。否则为 false。

ILayer

tensorrt.LayerType

层类型

成员

CONVOLUTION : 卷积层

GRID_SAMPLE : Grid Sample 层

NMS : NMS 层

ACTIVATION : 激活层

POOLING : 池化层

LRN : LRN 层

SCALE : Scale 层

SOFTMAX : Softmax 层

DECONVOLUTION : 反卷积层

CONCATENATION : 串联层

ELEMENTWISE : Elementwise 层

PLUGIN : 插件层

UNARY : 一元层

PADDING : 填充层

SHUFFLE : Shuffle 层

REDUCE : Reduce 层

TOPK : TopK 层

GATHER : Gather 层

MATRIX_MULTIPLY : 矩阵乘法层

RAGGED_SOFTMAX : Ragged Softmax 层

CONSTANT : 常量层

IDENTITY : 恒等层

CAST : Cast 层

PLUGIN_V2 : PluginV2 层

SLICE : Slice 层

SHAPE : Shape 层

PARAMETRIC_RELU : 参数化 ReLU 层

RESIZE : Resize 层

TRIP_LIMIT : 循环 Trip Limit 层

RECURRENCE : 循环 Recurrence 层

ITERATOR : 循环 Iterator 层

LOOP_OUTPUT : 循环输出层

SELECT : Select 层

ASSERTION : Assertion 层

FILL : Fill 层

QUANTIZE : 量化层

DEQUANTIZE : 反量化层

CONDITION : If 条件层

CONDITIONAL_INPUT : If 条件输入层

CONDITIONAL_OUTPUT : If 条件输出层

SCATTER : Scatter 层

EINSUM : Einsum 层

ONE_HOT : OneHot 层

NON_ZERO : NonZero 层

REVERSE_SEQUENCE : ReverseSequence 层

NORMALIZATION : 归一化层

PLUGIN_V3 : PluginV3 层

SQUEEZE : Squeeze 层

UNSQUEEZE : Unsqueeze 层

CUMULATIVE : 累积层

DYNAMIC_QUANTIZE : 动态量化层

class tensorrt.ILayer

INetworkDefinition 中所有层类的基类 。

变量:
  • namestr 层的名称。

  • typeLayerType 层的类型。

  • num_inputsint 层的输入数量。

  • num_outputsint 层的输出数量。

  • precisionDataType 计算精度。

  • precision_is_setbool 精度是否已设置。

Ival 元数据:

str 每层元数据。

get_input(self: tensorrt.tensorrt.ILayer, index: int) tensorrt.tensorrt.ITensor

获取与给定索引对应的层输入。

参数:

index – 输入张量的索引。

返回值:

输入张量;如果索引超出范围,则为 None

get_output(self: tensorrt.tensorrt.ILayer, index: int) tensorrt.tensorrt.ITensor

获取与给定索引对应的层输出。

参数:

index – 输出张量的索引。

返回值:

输出张量;如果索引超出范围,则为 None

get_output_type(self: tensorrt.tensorrt.ILayer, index: int) tensorrt.tensorrt.DataType

获取层的输出类型。

参数:

index – 输出张量的索引。

返回值:

输出精度。默认值:DataType.FLOAT。

output_type_is_set(self: tensorrt.tensorrt.ILayer, index: int) bool

是否已为此层设置输出类型。

参数:

index – 输出的索引。

返回值:

输出类型是否已显式设置。

reset_output_type(self: tensorrt.tensorrt.ILayer, index: int) None

重置此层的输出类型。

参数:

index – 输出的索引。

reset_precision(self: tensorrt.tensorrt.ILayer) None

重置层的计算精度。

set_input(self: tensorrt.tensorrt.ILayer, index: int, tensor: tensorrt.tensorrt.ITensor) None

设置与给定索引对应的层输入。

参数:
  • index – 输入张量的索引。

  • tensor – 输入张量。

set_output_type(self: tensorrt.tensorrt.ILayer, index: int, dtype: tensorrt.tensorrt.DataType) None

约束层以生成具有给定类型的输出数据。请注意,此方法不能用于设置 topK 层的第二个输出张量的数据类型。 topK 层的第二个输出张量的数据类型始终为 int32

参数:
  • index – 要设置类型的输出张量的索引。

  • dtype – 输出的 DataType。