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

LSTM recurrent layer [詳解]

#include <all_layers.hpp>

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

公開メンバ関数

virtual CV_DEPRECATED void setWeights (const Mat &Wh, const Mat &Wx, const Mat &b)=0
LSTMレイヤーに学習済みのウェイトを設定します。[【詳解】(英語]
virtual void setOutShape (const MatShape &outTailShape=MatShape())=0
出力blobの形状を指定し、[[T],N] +outTailShape.[【詳解】(英語]
virtual CV_DEPRECATED void setUseTimstampsDim (bool use=true)=0
入力blobの最初の次元をタイムスタンプ次元として解釈するか、サンプルとして解釈するかを指定します。[【詳解】(英語]
virtual CV_DEPRECATED void setProduceCellOutput (bool produce=false)=0
このフラグがtrueに設定されている場合、レイヤーは2番目の出力として$ c_t $を2番目の出力として生成します。[【詳解】(英語]
int inputNameToIndex (String inputName) CV_OVERRIDE
入力blobのインデックスを入力配列に返します。[【詳解】(英語]
int outputNameToIndex (const String &outputName) CV_OVERRIDE
出力配列に出力blobのインデックスを返します。[【詳解】(英語]
- 基底クラス 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 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< LSTMLayer > 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

詳解

LSTM再帰層

関数詳解

create()

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

LSTMレイヤーのインスタンスを作成する

inputNameToIndex()

int cv::dnn::LSTMLayer::inputNameToIndex ( String inputName )
virtual

入力blobのインデックスを入力配列に返します。

引数
inputName 入力blobのラベル

各レイヤーの入力と出力には、"%<レイヤー名%>[.出力名]"という表記を使って、簡単に識別できるラベルを付けることができます。このメソッドは、入力blobのラベルを入力ベクトルのインデックスにマッピングします。

cv::dnn::Layerを再実装します。

outputNameToIndex()

int cv::dnn::LSTMLayer::outputNameToIndex ( const String & outputName )
virtual

出力配列に出力blobのインデックスを返します。

参照
inputNameToIndex()

cv::dnn::Layerを再実装します。

setOutShape()

virtual void cv::dnn::LSTMLayer::setOutShape ( const MatShape & outTailShape = MatShape() )
pure virtual

出力blobの形状を指定し、[[T],N] +outTailShape.

このパラメーターが空または未設定の場合はoutTailShape= [Wh.size(0)]が使用されます。Whのパラメータです。setWeights().

setProduceCellOutput()

virtual CV_DEPRECATED void cv::dnn::LSTMLayer::setProduceCellOutput ( bool produce = false )
pure virtual

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

非推奨:
フラグを使うuse_timestamp_dimを使用します。LayerParams.

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

setUseTimstampsDim()

virtual CV_DEPRECATED void cv::dnn::LSTMLayer::setUseTimstampsDim ( bool use = true )
pure virtual

入力blobの最初の次元をタイムスタンプ次元として解釈するか、サンプルとして解釈するかを指定します。

非推奨:
フラグを使うproduce_cell_outputを使用します。LayerParams.

flagがtrueに設定されている場合、入力blobの形状は、[T,N,[data dims]] と解釈されます。Tは、タイムスタンプの数を指定します。Nは、独立したストリームの数です。この場合、各forward()を呼び出すたびにTタイムスタンプを繰り返し、レイヤーの状態を更新します。T回です。

flagがfalseに設定されている場合、入力blobの形状は、[N,[data dims]]. この場合、各forward()を呼び出すと、1回の反復が行われ、形状が[N,[out dims]].

setWeights()

virtual CV_DEPRECATED void cv::dnn::LSTMLayer::setWeights ( const Mat & Wh,
const Mat & Wx,
const Mat & b
)
pure virtual

LSTMレイヤーに学習済みのウェイトを設定します。

非推奨:
を使用します。LayerParams::blobs代わりに

各ステップにおけるLSTMの動作は、現在の入力、前回の出力、前回のセルの状態、学習した重みによって定義される。

ここで$x_t$を現在の入力とする。$h_t$を現在の出力とする。$c_t$は現在の状態である。現在の出力と現在のセルの状態は以下のように計算されます。

\begin{eqnarray*} h_t &= o_t \odot tanh(c_t), \\ c_t &= f_t \odot c_{t-1} + i_t \odot g_t, \\ \end{eqnarray*}

ここで$\odot$は要素ごとの乗算演算であり$i_t, f_t, o_t, g_t$は学習した重みを用いて計算される内部ゲートです。

ゲートは以下のように計算されます。

\begin{eqnarray*} i_t &= sigmoid&(W_{xi} x_t + W_{hi} h_{t-1} + b_i), \\ f_t &= sigmoid&(W_{xf} x_t + W_{hf} h_{t-1} + b_f), \\ o_t &= sigmoid&(W_{xo} x_t + W_{ho} h_{t-1} + b_o), \\ g_t &= tanh &(W_{xg} x_t + W_{hg} h_{t-1} + b_g), \\ \end{eqnarray*}

ここで$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}$.

簡略化と性能向上のため,ここでは$ W_x = [W_{xi}; W_{xf}; W_{xo}, W_{xg}] $(を使用しています(つまり$W_x$の垂直連結です。$ W_{x?} $),$ W_x \in R^{4N_h \times N_x} $. についても同様です。$ W_h = [W_{hi}; W_{hf}; W_{ho}, W_{hg}], W_h \in R^{4N_h \times N_h} $$ b = [b_i; b_f, b_o, b_g]$,$b \in R^{4N_h} $.

引数
Wh は,前の出力がどのように内部ゲートに変換されるかを定義する行列である(すなわち,上述の表記法によれば$ W_h $)
Wx は,現在の入力が内部ゲートにどのように変換されるかを定義する行列である(すなわち,上述の表記法によれば$ W_x $)
b はバイアスベクトル(上述の表記法によれば$ b $)

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