OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
cv::dnn::RNNLayer クラス abstract

Classical recurrent layer [詳解]

#include <all_layers.hpp>

cv::dnn::Layerを継承しています。

公開メンバ関数

virtual void setWeights (const Mat &Wxh, const Mat &bh, const Mat &Whh, const Mat &Who, const Mat &bo)=0
virtual void setProduceHiddenOutput (bool produce=false)=0
このフラグがtrueに設定されている場合、レイヤーは2番目の出力として$ h_t $を2番目の出力として生成します。[【詳解】(英語]
- 基底クラス cv::dnn::Layer に属する継承公開メンバ関数
virtual CV_DEPRECATED_EXTERNAL void finalize (const std::vector< Mat * > &input, std::vector< Mat > &output)
入力、出力、blobに応じて内部パラメータを計算、設定します。[【詳解】(英語]
virtual CV_WRAP void finalize (InputArrayOfArrays inputs, OutputArrayOfArrays outputs)
入力、出力、blobに応じて内部パラメータを計算、設定します。[【詳解】(英語]
virtual CV_DEPRECATED_EXTERNAL void forward (std::vector< Mat * > &input, std::vector< Mat > &output, std::vector< Mat > &internals)
blobが与えられるとinputblobが与えられると、出力を計算するblobs.[【詳解】(英語]
virtual void forward (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
blobが与えられるとinputblobが与えられると、出力を計算するblobs.[【詳解】(英語]
void forward_fallback (InputArrayOfArrays inputs, OutputArrayOfArrays outputs, OutputArrayOfArrays internals)
blobが与えられるとinputblobが与えられると、出力を計算するblobs.[【詳解】(英語]
CV_DEPRECATED_EXTERNAL void finalize (const std::vector< Mat > &inputs, CV_OUT std::vector< Mat > &outputs)
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。[【詳解】(英語]
CV_DEPRECATED std::vector< Mat > finalize (const std::vector< Mat > &inputs)
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。[【詳解】(英語]
CV_DEPRECATED CV_WRAP void run (const std::vector< Mat > &inputs, CV_OUT std::vector< Mat > &outputs, CV_IN_OUT std::vector< Mat > &internals)
レイヤーを割り当て、出力を計算します。[【詳解】(英語]
virtual int inputNameToIndex (String inputName)
入力blobのインデックスを入力配列に返します。[【詳解】(英語]
virtual CV_WRAP int outputNameToIndex (const String &outputName)
出力配列に出力blobのインデックスを返します。[【詳解】(英語]
virtual bool supportBackend (int backendId)
計算を行うために特定のバックエンドをサポートしているかどうかをレイヤーに尋ねます。[【詳解】(英語]
virtual Ptr< BackendNode > initHalide (const std::vector< Ptr< BackendWrapper > > &inputs)
Halide バックエンドノードを返します。[【詳解】(英語]
virtual Ptr< BackendNode > initInfEngine (const std::vector< Ptr< BackendWrapper > > &inputs)
virtual Ptr< BackendNode > initNgraph (const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendNode > > &nodes)
virtual Ptr< BackendNode > initVkCom (const std::vector< Ptr< BackendWrapper > > &inputs)
virtual Ptr< BackendNode > initCUDA (void *context, const std::vector< Ptr< BackendWrapper > > &inputs, const std::vector< Ptr< BackendWrapper > > &outputs)
CUDA バックエンドノードを返します[【詳解】(英語]
virtual void applyHalideScheduler (Ptr< BackendNode > &node, const std::vector< Mat * > &inputs, const std::vector< Mat > &outputs, int targetId) const
レイヤーのハイパーパラメータに基づいたHalideの自動スケジューリング[【詳解】(英語]
virtual Ptr< BackendNode > tryAttach (const Ptr< BackendNode > &node)
レイヤーフュージングの実装[【詳解】(英語]
virtual bool setActivation (const Ptr< ActivationLayer > &layer)
活性化された後続のレイヤーをそのレイヤーに添付しようとします。つまり、部分的なケースでレイヤーフュージョンを行います。[【詳解】(英語]
virtual bool tryFuse (Ptr< Layer > &top)
現在のレイヤと次のレイヤの融合を試みる[【詳解】(英語]
virtual void getScaleShift (Mat &scale, Mat &shift) const
チャネル単位の乗算と加算でレイヤーのパラメータを返します。[【詳解】(英語]
virtual void unsetAttached ()
"Deattaches" all the layers, attached to particular layer.
virtual bool getMemoryShapes (const std::vector< MatShape > &inputs, const int requiredOutputs, std::vector< MatShape > &outputs, std::vector< MatShape > &internals) const
virtual int64 getFLOPS (const std::vector< MatShape > &inputs, const std::vector< MatShape > &outputs) const
virtual bool updateMemoryShapes (const std::vector< MatShape > &inputs)
Layer (const LayerParams &params)
フィールドのみを初期化します。name,typeおよびblobsフィールドだけを初期化します。
void setParamsFrom (const LayerParams &params)
フィールドのみを初期化します。name,typeおよびblobsフィールドだけを初期化します。
- 基底クラス cv::Algorithm に属する継承公開メンバ関数
virtual CV_WRAP void clear ()
アルゴリズムの状態をクリアする[【詳解】(英語]
virtual void write (FileStorage &fs) const
アルゴリズムのパラメーターをファイルストレージに格納[【詳解】(英語]
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
virtual CV_WRAP void read (const FileNode &fn)
アルゴリズム・パラメータをファイル・ストレージから読み込みます。[【詳解】(英語]
virtual CV_WRAP bool empty () const
が空の場合はtrueを返します。Algorithmが空の場合は真を返します。[【詳解】(英語]
virtual CV_WRAP void save (const String &filename) const
virtual CV_WRAP String getDefaultName () const

静的公開メンバ関数

static Ptr< RNNLayer > create (const LayerParams &params)
- 基底クラス cv::Algorithm に属する継承静的公開メンバ関数
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
ファイル・ノードからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
ファイルからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
文字列からアルゴリズムを読み込む[【詳解】(英語]

その他の継承メンバ

- 基底クラス cv::dnn::Layer に属する継承公開変数類
CV_PROP_RW std::vector< Mat > blobs
学習したパラメータのリストをここに保存しておくことで、使用者が読み込めるようになります。Net::getParam().
CV_PROP String name
レイヤーインスタンスの名前。ログ記録やその他の内部的な目的に使用できます。
CV_PROP String type
レイヤファクトリでレイヤを作成する際に使用された名前を入力してください。
CV_PROP int preferableTarget
フォワーディングの対象となるレイヤー
- 基底クラス cv::Algorithm に属する継承限定公開メンバ関数
void writeFormat (FileStorage &fs) const

詳解

古典的な再帰層

2つの入力を受け取り$x_t$および$h_{t-1}$そして2つの出力を計算する$o_t$および$h_t$.

input[0]の形状は、[T,N,data_dims] と解釈されます。TおよびNは,それぞれタイムスタンプの数,独立したサンプルの数です。$x_t$になります.

output[0]の形状は[T,N,$N_o$]を持ち,ここで$N_o$は行列の行数です。$ W_{xo} $行列の行数です.

もしsetProduceHiddenOutput()が真に設定されるとoutput出力[1]にはMatの形をした [T,N,$N_h$]を持ち,ここで$N_h$は行列の行数です。$ W_{hh} $行列の行数です.

関数詳解

create()

static Ptr< RNNLayer > cv::dnn::RNNLayer::create ( const LayerParams & params )
static

のインスタンスを作成します。RNNLayer

setProduceHiddenOutput()

virtual void cv::dnn::RNNLayer::setProduceHiddenOutput ( bool produce = false )
pure virtual

このフラグがtrueに設定されている場合、レイヤーは2番目の出力として$ h_t $を2番目の出力として生成します。

2番目の出力の形状は、1番目の出力と同じです。

setWeights()

virtual void cv::dnn::RNNLayer::setWeights ( const Mat & Wxh,
const Mat & bh,
const Mat & Whh,
const Mat & Who,
const Mat & bo
)
pure virtual

学習した重みを設定する。

各ステップでのリカレント層の動作は,現在の入力$ x_t $前回の状態$ h_t $と学習した重みによって以下のように定義される.

\begin{eqnarray*} h_t &= tanh&(W_{hh} h_{t-1} + W_{xh} x_t + b_h), \\ o_t &= tanh&(W_{ho} h_t + b_o), \end{eqnarray*}

引数
Wxh $ W_{xh} $マトリックス
bh $ b_{h} $ベクトル
Whh $ W_{hh} $マトリックス
Who $ W_{xo} $マトリックス
bo $ b_{o} $ベクトル

このクラス詳解は次のファイルから抽出されました: