TensorRT 10.8.0
nvinfer1::ILoop 类参考

用于创建循环子图的助手。 更多...

#include <NvInfer.h>

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

公有成员函数

IRecurrenceLayeraddRecurrence (ITensor &initialValue) noexcept
 为此循环创建一个循环层,并将 initialValue 作为其第一个输入。 更多...
 
ITripLimitLayeraddTripLimit (ITensor &tensor, TripLimit limit) noexcept
 添加一个基于给定张量的 trip-count 限制器。 更多...
 
IIteratorLayeraddIterator (ITensor &tensor, int32_t axis=0, bool reverse=false) noexcept
 返回通过循环迭代下标张量的层。 更多...
 
ILoopOutputLayeraddLoopOutput (ITensor &tensor, LoopOutput outputKind, int32_t axis=0) noexcept
 为此循环创建一个输出,基于给定的张量。 更多...
 
void setName (char const *name) noexcept
 设置循环的名称。 更多...
 
char const * getName () const noexcept
 返回循环的名称。 更多...
 

保护成员函数

virtual ~ILoop () 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::VLoop * mImpl
 

详细描述

用于创建循环子图的助手。

ILoop 定义了网络中的一个循环。 它支持循环的实现,这对于迭代计算至关重要,例如用于自然语言处理和时间序列分析的 RNN。

构造函数 & 析构函数文档

◆ ~ILoop()

virtual nvinfer1::ILoop::~ILoop ( )
protectedvirtualdefaultnoexcept

成员函数文档

◆ addIterator()

IIteratorLayer * nvinfer1::ILoop::addIterator ( ITensor tensor,
int32_t  axis = 0,
bool  reverse = false 
)
inlinenoexcept

返回通过循环迭代下标张量的层。

对于 reverse=false,这等效于 addGather(tensor, I, 0),其中 I 是一个包含循环迭代次数的标量张量。 对于 reverse=true,这等效于 addGather(tensor, M-1-I, 0),其中 M 是从 TripLimits 的 kCOUNT 类型计算出的 trip count。

◆ addLoopOutput()

ILoopOutputLayer * nvinfer1::ILoop::addLoopOutput ( ITensor tensor,
LoopOutput  outputKind,
int32_t  axis = 0 
)
inlinenoexcept

为此循环创建一个输出,基于给定的张量。

axis 是用于连接的轴(如果使用 kCONCATENATE 或 kREVERSE 的 outputKind)。

如果 outputKind 是 kCONCATENATE 或 kREVERSE,则必须通过方法 ILoopOutputLayer::setInput 添加第二个输入来指定连接维度。

◆ addRecurrence()

IRecurrenceLayer * nvinfer1::ILoop::addRecurrence ( ITensor initialValue)
inlinenoexcept

为此循环创建一个循环层,并将 initialValue 作为其第一个输入。

IRecurrenceLayer 正好需要两个输入。 在构建 Engine 之前,必须通过方法 IRecurrenceLayer::setInput(1,...) 添加第二个输入。

◆ addTripLimit()

ITripLimitLayer * nvinfer1::ILoop::addTripLimit ( ITensor tensor,
TripLimit  limit 
)
inlinenoexcept

添加一个基于给定张量的 trip-count 限制器。

一个循环最多可以有一个 kCOUNT 和一个 kWHILE 限制器。 当两个 trip limit 都存在时,循环在达到计数或条件为假时退出。 不添加至少一个 trip limiter 是错误的。

对于 kCOUNT,输入张量必须在循环开始之前可用。

对于 kWHILE,输入张量必须是一个子图的输出,该子图仅包含不是 ITripLimitLayerIIteratorLayerILoopOutputLayer 的层。 子图中的任何 IRecurrenceLayer 都必须与 ITripLimitLayer 属于同一循环。 此规则的一个简单示例是,kWHILE 的输入是同一循环的 IRecurrenceLayer 的输出。

◆ getName()

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

返回循环的名称。

另请参阅
setName()

◆ setName()

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

设置循环的名称。

该名称用于错误诊断。 此方法复制名称字符串。

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

成员数据文档

◆ mImpl

apiv::VLoop* nvinfer1::ILoop::mImpl
protected

此类的文档是从以下文件生成的

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