OpenCV  4.10.0
开源计算机视觉库
加载中...
搜索中...
未找到匹配项
静态公共成员函数 | 所有成员列表

GRU 循环单层。 更多...

#include <opencv2/dnn/all_layers.hpp>

cv::dnn::GRULayer 的协作图

静态公共成员函数

static Ptr< GRULayercreate (const LayerParams &params)
 
- 从 cv::Algorithm 继承的静态公共成员函数
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件中加载算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点读取算法。
 

其他继承成员

- 从 cv::dnn::Layer 继承的公共成员函数
 Layer ()
 
 Layer (const LayerParams &params)
 仅初始化 nametypeblobs 字段。
 
virtual ~Layer ()
 
virtual void applyHalideScheduler (Ptr< BackendNode > &node, const std::vector< Mat * > &inputs, const std::vector< Mat > &outputs, int targetId) const
 基于层超参数的自动 Halide 调度。
 
virtual void finalize (const std::vector< Mat * > &input, std::vector< Mat > &output)
 根据输入、输出和 blob 计算并设置内部参数。
 
std::vector< Matfinalize (const std::vector< Mat > &inputs)
 这是一个重载成员函数,为方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
 
void finalize (const std::vector< Mat > &inputs, std::vector< Mat > &outputs)
 这是一个重载成员函数,为方便起见而提供。 它与上述函数的不同之处仅在于它接受的参数。
 
virtual void finalize (InputArrayOfArrays inputs, OutputArrayOfArrays outputs)
 根据输入、输出和 blob 计算并设置内部参数。
 
virtual void forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
 根据给定的 input blob 计算输出 blobs
 
virtual void forward (std::vector< Mat * > &input, std::vector< Mat > &output, std::vector< Mat > &internals)
 根据给定的 input blob 计算输出 blobs
 
void forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
 根据给定的 input blob 计算输出 blobs
 
virtual int64 getFLOPS (const std::vector< MatShape > &inputs, const std::vector< MatShape > &outputs) const
 
virtual bool getMemoryShapes (const std::vector< MatShape > &inputs, const int requiredOutputs, std::vector< MatShape > &outputs, std::vector< MatShape > &internals) const
 
virtual void getScaleShift (Mat &scale, Mat &shift) const
 返回具有逐通道乘法和加法层的参数。
 
virtual void getScaleZeropoint (float &scale, int &zeropoint) const
 返回层的缩放比例和零点。
 
virtual Ptr< BackendNodeinitCann (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs, const std::vector< Ptr< BackendNode > > &nodes)
 返回一个 CANN 后端节点。
 
virtual Ptr< BackendNodeinitCUDA (void *context, const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs)
 返回一个 CUDA 后端节点。
 
virtual Ptr< BackendNodeinitHalide (const std::vector< Ptr< BackendWrapper > > &inputs)
 返回 Halide 后端节点。
 
virtual Ptr< BackendNodeinitNgraph (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendNode > > &nodes)
 
virtual Ptr< BackendNodeinitTimVX (void *timVxInfo, const std::vector< Ptr< BackendWrapper > > &inputsWrapper, const std::vector< Ptr< BackendWrapper > > &outputsWrapper, bool isLast)
 返回一个 TimVX 后端节点。
 
virtual Ptr< BackendNodeinitVkCom (const std::vector< Ptr< BackendWrapper > > &inputs, std::vector< Ptr< BackendWrapper > > &outputs)
 
virtual Ptr< BackendNodeinitWebnn (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendNode > > &nodes)
 
virtual int inputNameToIndex (String inputName)
 返回输入数组中输入 blob 的索引。
 
virtual int outputNameToIndex (const String &outputName)
 返回输出数组中输出 blob 的索引。
 
void run (const std::vector< Mat > &inputs, std::vector< Mat > &outputs, std::vector< Mat > &internals)
 分配层并计算输出。
 
virtual bool setActivation (const Ptr< ActivationLayer > &layer)
 尝试将后续激活层附加到该层,即在部分情况下进行层融合。
 
void setParamsFrom (const LayerParams &params)
 仅初始化 nametypeblobs 字段。
 
virtual bool supportBackend (int backendId)
 询问层是否支持特定后端进行计算。
 
virtual Ptr< BackendNodetryAttach (const Ptr< BackendNode > &node)
 实现层融合。
 
virtual bool tryFuse (Ptr< Layer > &top)
 尝试将当前层与下一层融合。
 
virtual bool tryQuantize (const std::vector< std::vector< float > > &scales, const std::vector< std::vector< int > > &zeropoints, LayerParams &params)
 尝试量化给定层并计算定点实现所需的量化参数。
 
virtual void unsetAttached ()
 “分离”附加到特定层的所有层。
 
virtual bool updateMemoryShapes (const std::vector< MatShape > &inputs)
 
- 从 cv::Algorithm 继承的公共成员函数
 算法 ()
 
virtual ~算法 ()
 
virtual void 清除 ()
 清除算法状态。
 
virtual bool 为空 () const
 如果 算法 为空(例如,在最开始或读取失败后),则返回 true。
 
virtual 字符串 获取默认名称 () const
 
virtual void 读取 (const FileNode &fn)
 从文件存储中读取算法参数。
 
virtual void 保存 (const 字符串 &filename) const
 
void 写入 (const Ptr< FileStorage > &fs, const 字符串 &name=字符串()) const
 
virtual void 写入 (FileStorage &fs) const
 将算法参数存储在文件存储中。
 
void 写入 (FileStorage &fs, const 字符串 &name) const
 
- 从 cv::dnn::Layer 继承的公共属性
std::vector< Mat斑点
 必须在此处存储学习到的参数列表,以便可以通过使用 Net::getParam() 读取它们。
 
字符串 名称
 层实例的名称,可用于日志记录或其他内部用途。
 
int 首选目标
 层转发的首选目标
 
字符串 类型
 用于由层工厂创建层的类型名称。
 
- 从 cv::Algorithm 继承的受保护成员函数
void 写入格式 (FileStorage &fs) const
 

详细描述

GRU 循环单层。

接受输入序列并计算批次中每个元素的最终隐藏状态。

取决于以下属性

最终隐藏状态 \( h_t \) 通过以下公式计算

\begin{eqnarray*} r_t = \sigma(W_{ir} x_t + b_{ir} + W_{hr} h_{(t-1)} + b_{hr}) \\ z_t = \sigma(W_{iz} x_t + b_{iz} + W_{hz} h_{(t-1)} + b_{hz}) \\ n_t = \tanh(W_{in} x_t + b_{in} + r_t \odot (W_{hn} h_{(t-1)}+ b_{hn})) \\ h_t = (1 - z_t) \odot n_t + z_t \odot h_{(t-1)} \\ \end{eqnarray*}

其中 \(x_t\) 是当前输入,\(h_{(t-1)}\) 是先前或初始隐藏状态。

\(W_{x?}\)、\(W_{h?}\) 和 \(b_{?}\) 是学习到的权重,表示为矩阵:\(W_{x?} \in R^{N_h \times N_x}\)、\(W_{h?} \in R^{N_h \times N_h}\)、\(b_? \in R^{N_h}\)。

\(\odot\) 是逐元素乘法运算。

成员函数文档

◆ 创建()

static Ptr< GRULayer > cv::dnn::GRULayer::创建 ( const LayerParams 参数)
静态

创建 GRU 层的实例


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