TensorRT 10.8.0
nvinfer1::ITensor 类参考

网络定义中的张量。 更多...

#include <NvInfer.h>

nvinfer1::ITensor 的继承关系图
nvinfer1::INoCopy

公共成员函数

void setName (char const *name) noexcept
 设置张量名称。 更多...
 
char const * getName () const noexcept
 获取张量名称。 更多...
 
void setDimensions (Dims const &dimensions) noexcept
 设置张量的维度。 更多...
 
Dims getDimensions () const noexcept
 获取张量的维度。 更多...
 
void setType (DataType type) noexcept
 设置张量的数据类型。 更多...
 
DataType getType () const noexcept
 获取张量的数据类型。 更多...
 
TRT_DEPRECATED bool setDynamicRange (float min, float max) noexcept
 设置张量的动态范围。 更多...
 
bool isNetworkInput () const noexcept
 判断张量是否为网络输入。 更多...
 
bool isNetworkOutput () const noexcept
 判断张量是否为网络输出。 更多...
 
TRT_DEPRECATED void setBroadcastAcrossBatch (bool broadcastAcrossBatch) noexcept
 设置是否启用跨隐式批次维度的张量广播。 更多...
 
TRT_DEPRECATED bool getBroadcastAcrossBatch () const noexcept
 检查张量是否跨隐式批次维度广播。 更多...
 
TensorLocation getLocation () const noexcept
 获取张量的存储位置。 更多...
 
TRT_DEPRECATED void setLocation (TensorLocation location) noexcept
 设置张量的存储位置。 更多...
 
TRT_DEPRECATED bool dynamicRangeIsSet () const noexcept
 查询是否设置了动态范围。 更多...
 
void resetDynamicRange () noexcept
 撤销 setDynamicRange 的效果。 更多...
 
float getDynamicRangeMin () const noexcept
 获取动态范围的最小值。 更多...
 
float getDynamicRangeMax () const noexcept
 获取动态范围的最大值。 更多...
 
void setAllowedFormats (TensorFormats formats) noexcept
 为输入或输出张量设置允许的格式。 默认情况下,允许所有格式。 形状张量(isShapeTensor() 返回 true 时)可能只具有行主线性格式。 更多...
 
TensorFormats getAllowedFormats () const noexcept
 获取张量支持的 TensorFormat 值位掩码。 对于形状张量,只允许行主线性格式。 更多...
 
bool isShapeTensor () const noexcept
 判断张量是否为形状张量。 更多...
 
bool isExecutionTensor () const noexcept
 判断张量是否为执行张量。 更多...
 
void setDimensionName (int32_t index, char const *name) noexcept
 命名输入张量的维度。 更多...
 
char const * getDimensionName (int32_t index) const noexcept
 获取输入维度的名称。 更多...
 

保护成员函数

virtual ~ITensor () noexcept=default
 
- 继承自 nvinfer1::INoCopy 的保护成员函数
 INoCopy ()=default
 
virtual ~INoCopy ()=default
 
 INoCopy (INoCopy const &other)=delete
 
INoCopyoperator= (INoCopy const &other)=delete
 
 INoCopy (INoCopy &&other)=delete
 
INoCopyoperator= (INoCopy &&other)=delete
 

保护属性

apiv::VTensor * mImpl
 

详细描述

网络定义中的张量。

要从网络定义中移除张量,请使用 INetworkDefinition::removeTensor()

当使用 DLA 时,所有未标记为网络输入或输出张量的张量的累积大小必须小于 1GB,才能适应单个子图。 如果指定了构建选项 kGPU_FALLBACK,则可以创建多个子图,每个子图的内部张量数据限制为小于 1GB。

警告
张量的体积必须小于 2^31 个元素。 如果张量是形状张量,则其体积不得超过 64。
请勿从此类继承,因为这样做会破坏 API 和 ABI 的向前兼容性。

构造函数 & 析构函数文档

◆ ~ITensor()

virtual nvinfer1::ITensor::~ITensor ( )
protectedvirtualdefaultnoexcept

成员函数文档

◆ dynamicRangeIsSet()

TRT_DEPRECATED bool nvinfer1::ITensor::dynamicRangeIsSet ( ) const
inlinenoexcept

查询是否设置了动态范围。

返回值
如果设置了动态范围,则为 True,否则为 false。
已弃用
在 TensorRT 10.1 中已弃用。 已被显式量化取代。

◆ getAllowedFormats()

TensorFormats nvinfer1::ITensor::getAllowedFormats ( ) const
inlinenoexcept

获取张量支持的 TensorFormat 值位掩码。 对于形状张量,只允许行主线性格式。

返回值
由 setAllowedFormats 指定的值或所有可能的格式。
另请参阅
ITensor::setAllowedFormats()

◆ getBroadcastAcrossBatch()

TRT_DEPRECATED bool nvinfer1::ITensor::getBroadcastAcrossBatch ( ) const
inlinenoexcept

检查张量是否跨隐式批次维度广播。

返回值
始终为 false,因为 TensorRT 10.0 不支持隐式批次维度。
另请参阅
setBroadcastAcrossBatch()
已弃用
在 TensorRT 10.0 中已弃用。 自 TensorRT 10.0 起,不支持隐式批次。

◆ getDimensionName()

char const * nvinfer1::ITensor::getDimensionName ( int32_t  index) const
inlinenoexcept

获取输入维度的名称。

参数
index维度的索引
返回值
输入维度的名称,如果维度没有名称,则为 nullptr。 名称是指向以 null 结尾的字符序列的指针。
另请参阅
setDimensionName()

◆ getDimensions()

Dims nvinfer1::ITensor::getDimensions ( ) const
inlinenoexcept

获取张量的维度。

返回值
张量的维度。
警告
getDimensions() 对于从通配符维度派生的维度,返回 -1。
另请参阅
setDimensions()

◆ getDynamicRangeMax()

float nvinfer1::ITensor::getDynamicRangeMax ( ) const
inlinenoexcept

获取动态范围的最大值。

返回值
动态范围的最大值,如果未设置范围,则为 quiet NaN。

◆ getDynamicRangeMin()

float nvinfer1::ITensor::getDynamicRangeMin ( ) const
inlinenoexcept

获取动态范围的最小值。

返回值
动态范围的最小值,如果未设置范围,则为 quiet NaN。

◆ getLocation()

TensorLocation nvinfer1::ITensor::getLocation ( ) const
inlinenoexcept

获取张量的存储位置。

返回值
张量数据的位置。
另请参阅
setLocation()

◆ getName()

char const * nvinfer1::ITensor::getName ( ) const
inlinenoexcept

获取张量名称。

返回值
名称,以 null 结尾的 C 风格字符串。
另请参阅
setName()

◆ getType()

DataType nvinfer1::ITensor::getType ( ) const
inlinenoexcept

获取张量的数据类型。

返回值
张量的数据类型。
另请参阅
setType()

◆ isExecutionTensor()

bool nvinfer1::ITensor::isExecutionTensor ( ) const
inlinenoexcept

判断张量是否为执行张量。

张量通常是执行张量。 例外情况是仅用于形状计算或其内容不需要计算输出的张量。

isExecutionTensor() 的结果仅在网络构建完成后才可靠。 例如,如果部分构建的网络没有从张量到网络输出的路径,则 isExecutionTensor() 返回 false。 完成路径将使其变为 true。

如果一个张量 isShapeTensor() == false 并且 isExecutionTensor() == false,如果需要其维度,仍然可以显示为引擎的输入。 在这种情况下,只需要在运行时设置其维度,并且可以传递 nullptr 而不是指向其内容的指针。

◆ isNetworkInput()

bool nvinfer1::ITensor::isNetworkInput ( ) const
inlinenoexcept

判断张量是否为网络输入。

◆ isNetworkOutput()

bool nvinfer1::ITensor::isNetworkOutput ( ) const
inlinenoexcept

判断张量是否为网络输出。

◆ isShapeTensor()

bool nvinfer1::ITensor::isShapeTensor ( ) const
inlinenoexcept

判断张量是否为形状张量。

形状张量是与形状计算相关的张量。 它必须具有 Int32、Int64、Bool 或 Float 类型,并且其形状必须在构建时可确定。 此外,它必须作为形状张量被需要,要么通过 markOutputForShapes() 标记为网络形状输出,要么作为需要为形状张量的层输入,例如 IShuffleLayer 的第二个输入。 某些层在这方面是“多态的”。 例如,如果输出是形状张量,则 IElementWiseLayer 的输入必须是形状张量。

TensorRT 开发人员指南给出了关于哪些张量是形状张量的正式规则。

isShapeTensor() 的结果仅在网络构建完成后才可靠。 例如,如果部分构建的网络将两个张量 T1 和 T2 相加创建张量 T3,并且都没有被用作形状张量,则 isShapeTensor() 对所有三个张量都返回 false。 将 IShuffleLayer 的第二个输入设置为 T3 将导致所有三个张量都成为形状张量,因为 IShuffleLayer 要求其第二个可选输入必须是形状张量,并且 IElementWiseLayer 是“多态的”。

张量可能既是形状张量又是执行张量。

返回值
如果张量是形状张量,则为 True,否则为 false。
另请参阅
INetworkDefinition::markOutputForShapes()

◆ resetDynamicRange()

void nvinfer1::ITensor::resetDynamicRange ( )
inlinenoexcept

撤销 setDynamicRange 的效果。

◆ setAllowedFormats()

void nvinfer1::ITensor::setAllowedFormats ( TensorFormats  formats)
inlinenoexcept

为输入或输出张量设置允许的格式。 默认情况下,允许所有格式。 形状张量(isShapeTensor() 返回 true 时)可能只具有行主线性格式。

当在 DLA 上运行网络并且未指定构建选项 kGPU_FALLBACK 时,如果设置了 DLA 格式(带有 Int8 的 kCHW4、带有 FP16 的 kCHW4、带有 FP16 的 kCHW16、带有 Int8 的 kCHW32),则输入格式被视为具有行步幅要求的本机 DLA 格式。 具有这些格式的输入/输出绑定在推理期间应具有正确的布局。

对于未标记为输入或输出的张量,TensorRT 在构建时确定张量格式。

参数
formats此张量支持的 TensorFormat 值位掩码。
另请参阅
ITensor::getAllowedFormats()
TensorFormats

◆ setBroadcastAcrossBatch()

TRT_DEPRECATED void nvinfer1::ITensor::setBroadcastAcrossBatch ( bool  broadcastAcrossBatch)
inlinenoexcept

设置是否启用跨隐式批次维度的张量广播。

警告
此方法除了发出警告外,没有任何效果。
参数
broadcastAcrossBatch是否跨 TensorRT 9.x 及更早版本的功能隐式批次维度广播张量。
另请参阅
getBroadcastAcrossBatch()
已弃用
在 TensorRT 10.0 中已弃用。 自 TensorRT 10.0 起,不支持隐式批次。

◆ setDimensionName()

void nvinfer1::ITensor::setDimensionName ( int32_t  index,
char const *  name 
)
inlinenoexcept

命名输入张量的维度。

将输入张量的运行时维度与符号名称关联。 具有相同非空名称的维度在运行时必须相等。 了解运行时维度的这种相等性可能有助于 TensorRT 优化器。 运行时和构建时维度都可以命名。

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

此方法复制名称字符串。 如果再次调用该函数,使用相同的索引,它将覆盖之前的名称。 如果将 nullptr 作为名称传递,它将清除维度的名称。

参数
index维度的索引
name维度的名称,作为指向以 null 结尾的字符序列的指针。
警告
字符串名称必须以 null 结尾,并且最多为 4096 字节,包括终止符。
另请参阅
getDimensionName()

◆ setDimensions()

void nvinfer1::ITensor::setDimensions ( Dims const &  dimensions)
inlinenoexcept

设置张量的维度。

对于网络输入,维度由应用程序分配。 对于网络输出,维度根据层参数和层的输入计算得出。 如果在网络中修改了张量大小或参数,则将重新计算所有依赖张量的维度。

此调用仅对网络输入张量合法,因为层输出张量的维度是根据层输入和参数推断出来的。 体积必须小于 2^31 个元素。

参数
dimensions张量的维度。
另请参阅
getDimensions()

◆ setDynamicRange()

TRT_DEPRECATED bool nvinfer1::ITensor::setDynamicRange ( float  min,
float  max 
)
inlinenoexcept

设置张量的动态范围。

目前,仅支持对称范围。 因此,使用提供的边界的绝对值中较大的值。

返回值
动态范围是否设置成功。

要求 min 和 max 是有限的,并且 min <= max。

已弃用
在 TensorRT 10.1 中已弃用。 已被显式量化取代。

◆ setLocation()

TRT_DEPRECATED void nvinfer1::ITensor::setLocation ( TensorLocation  location)
inlinenoexcept

设置张量的存储位置。

参数
location张量数据的位置

仅支持用于存储 RNNv2 序列长度的网络输入张量。 对于不支持主机存储的层使用主机存储将在构建时生成错误。

另请参阅
getLocation()
已弃用
在 TensorRT 10.0 中已弃用。 RNNv2 不受支持,并且自 TensorRT 10.0 起,位置必须始终为 TensorLocation::kDEVICE

◆ setName()

void nvinfer1::ITensor::setName ( char const *  name)
inlinenoexcept

设置张量名称。

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

此方法复制名称字符串。

参数
name名称。
警告
字符串名称必须以 null 结尾,并且最多为 4096 字节,包括终止符。
另请参阅
getName()

◆ setType()

void nvinfer1::ITensor::setType ( DataType  type)
inlinenoexcept

设置张量的数据类型。

参数
type张量的数据类型。

如果张量不是网络输入张量,或者未标记为输出张量或形状输出张量,则类型不会更改。

另请参阅
getType()

成员数据文档

◆ mImpl

apiv::VTensor* nvinfer1::ITensor::mImpl
protected

此类文档从以下文件生成

  版权所有 © 2024 NVIDIA Corporation
  隐私政策 | 管理我的隐私 | 请勿出售或分享我的数据 | 服务条款 | 辅助功能 | 公司政策 | 产品安全 | 联系方式