TensorRT 10.8.0
nvinfer1::IDequantizeLayer 类参考

网络定义中的反量化层。 更多...

#include <NvInfer.h>

nvinfer1::IDequantizeLayer 的继承关系图
nvinfer1::ILayer nvinfer1::INoCopy

公共成员函数

int32_t getAxis () const noexcept
 获取量化轴。 更多...
 
void setAxis (int32_t axis) noexcept
 设置量化轴。 更多...
 
void setToType (DataType toType) noexcept
 设置反量化层输出类型。 更多...
 
DataType getToType () const noexcept
 返回反量化层输出类型。 更多...
 
- 继承自 nvinfer1::ILayer 的公共成员函数
LayerType getType () const noexcept
 返回层的类型。 更多...
 
void setName (char const *name) noexcept
 设置层的名称。 更多...
 
char const * getName () const noexcept
 返回层的名称。 更多...
 
int32_t getNbInputs () const noexcept
 获取层的输入数量。 更多...
 
ITensorgetInput (int32_t index) const noexcept
 获取与给定索引对应的层输入。 更多...
 
int32_t getNbOutputs () const noexcept
 获取层的输出数量。 更多...
 
ITensorgetOutput (int32_t index) const noexcept
 获取与给定索引对应的层输出。 更多...
 
void setInput (int32_t index, ITensor &tensor) noexcept
 使用特定的张量替换此层的输入。 更多...
 
void setPrecision (DataType dataType) noexcept
 在弱类型网络中设置此层的首选或必需的计算精度。 更多...
 
DataType getPrecision () const noexcept
 获取此层的计算精度 更多...
 
bool precisionIsSet () const noexcept
 是否为此层设置了计算精度 更多...
 
void resetPrecision () noexcept
 重置此层的计算精度 更多...
 
void setOutputType (int32_t index, DataType dataType) noexcept
 在弱类型网络中设置此层的输出类型。 更多...
 
DataType getOutputType (int32_t index) const noexcept
 获取此层的输出类型 更多...
 
bool outputTypeIsSet (int32_t index) const noexcept
 是否为此层设置了输出类型 更多...
 
void resetOutputType (int32_t index) noexcept
 重置此层的输出类型 更多...
 
void setMetadata (char const *metadata) noexcept
 为此层设置元数据。 更多...
 
char const * getMetadata () const noexcept
 获取层的元数据。 更多...
 

保护成员函数

virtual ~IDequantizeLayer () noexcept=default
 
- 继承自 nvinfer1::ILayer 的保护成员函数
virtual ~ILayer () 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::VDequantizeLayer * mImpl
 
- 继承自 nvinfer1::ILayer 的保护属性
apiv::VLayer * mLayer
 

详细描述

网络定义中的反量化层。

此层接受量化类型输入张量,并使用配置的 scale 和 zeroPt 输入,根据以下公式对输入进行反量化: output = (input - zeroPt) * scale

第一个输入(索引 0)是要量化的张量。第二个(索引 1)和第三个(索引 2)分别是 scale 和 零点。 scalezeroPt 应具有相同的维度,并且秩小于或等于 2。

zeroPt 张量是可选的,如果未设置,则假定为零。其数据类型必须与输入的数据类型相同。 zeroPt 必须仅包含零值系数,因为仅支持对称量化。对于 per-tensor 量化,scale 值必须是标量;对于 per-channel 量化,必须是 1D 张量;对于块量化(仅 DataType::kINT4 支持),则必须与输入张量的秩相同。所有 scale 系数都必须具有正值。1D scale 张量的大小必须与量化轴的大小匹配。对于块量化,scale 张量的形状必须与输入的形状匹配,但一个维度(最后一个或倒数第二个维度)除外,在该维度中发生分块。zeroPt 的大小必须与 scale 的大小匹配。

scale 张量结尾的子图必须是构建时常量。相同的限制适用于 zeroPt。输出类型(如果受约束)必须约束为 DataType::kFLOATDataType::kHALFDataType::kBF16。输入类型(如果受约束)必须约束为 DataType::kINT8DataType::kFP8DataType::kINT4。输出大小与输入大小相同。量化轴是相对于输入张量的维度而言的。

IDequantizeLayer 支持 DataType::kINT8DataType::kFP8DataType::kINT4 精度,并且在实例化期间将默认为 DataType::kINT8 精度。对于强类型网络,input 数据类型必须与 zeroPt 数据类型相同。

IDequantizeLayer 支持 DataType::kFLOATDataType::kHALFDataType::kBF16 输出。对于强类型网络,output 数据类型是从 scale 数据类型推断出来的。

作为此层操作的示例,想象一个 4D NCHW 激活输入,可以使用单个 scale 系数(称为 per-tensor 量化)对其进行量化:对于 N 中的每个 n:对于 C 中的每个 c:对于 H 中的每个 h:对于 W 中的每个 w: output[n,c,h,w] = (input[n,c,h,w] - zeroPt) * scale

仅当输入扎根于 IConstantLayer (即权重)时,才支持 per-channel 反量化。激活不能按通道量化。作为 per-channel 操作的示例,想象一个 4D KCRS 权重输入,并将 K(维度 0)作为量化轴。scale 是一个系数数组,其大小与量化轴相同。对于 K 中的每个 k:对于 C 中的每个 c:对于 R 中的每个 r:对于 S 中的每个 s: output[k,c,r,s] = (input[k,c,r,s] - zeroPt[k]) * scale[k]

仅对于扎根于 IConstantLayer (即权重)且具有 DataType::kINT4 的输入张量,才支持块反量化。作为块操作的示例,想象一个 2D RS 权重输入,其中 R(维度 0)作为分块轴,B 作为块大小。scale 是一个 2D 系数数组,维度为 (R//B, S)。对于 R 中的每个 r:对于 S 中的每个 s: output[r,s] = (input[r,s] - zeroPt[r//B, s]) * scale[r//B, s]

注意
仅支持对称量化。
当前,唯一允许的构建时常量 scalezeroPt 子图是
  1. Constant -> Quantize
  2. Constant -> Cast -> Quantize
此层的输入张量不得为标量。
警告
请勿从此类继承,这样做会破坏 API 和 ABI 的向前兼容性。

构造函数和析构函数文档

◆ ~IDequantizeLayer()

virtual nvinfer1::IDequantizeLayer::~IDequantizeLayer ( )
protectedvirtualdefaultnoexcept

成员函数文档

◆ getAxis()

int32_t nvinfer1::IDequantizeLayer::getAxis ( ) const
inlinenoexcept

获取量化轴。

返回值
setAxis() 设置的 axis 参数。返回值是输入张量维度中量化轴的索引。值 -1 表示 per-tensor 量化。默认值为 -1。

◆ getToType()

DataType nvinfer1::IDequantizeLayer::getToType ( ) const
inlinenoexcept

返回反量化层输出类型。

返回值
在层创建期间或由 setToType() 设置的 toType 参数。返回值是量化层的输出类型。默认值为 DataType::kFLOAT

◆ setAxis()

void nvinfer1::IDequantizeLayer::setAxis ( int32_t  axis)
inlinenoexcept

设置量化轴。

设置量化轴的索引(参考输入张量的维度)。如果 scale 张量具有多个系数,则轴必须是有效轴。如果 scale 张量只有一个系数(per-tensor 量化),则将忽略轴值。

◆ setToType()

void nvinfer1::IDequantizeLayer::setToType ( DataType  toType)
inlinenoexcept

设置反量化层输出类型。

参数
toType输出张量的 DataType。

设置反量化层的输出类型。有效值是 DataType::kFLOATDataType::kHALF。如果网络是强类型的,则必须使用 setToType 来设置输出类型,并且使用 setOutputType 是错误的。否则,传递给 setOutputType 和 setToType 的类型必须相同。

参见
NetworkDefinitionCreationFlag::kSTRONGLY_TYPED

成员数据文档

◆ mImpl

apiv::VDequantizeLayer* nvinfer1::IDequantizeLayer::mImpl
protected

此类文档从以下文件生成:

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