Stateful Predict
ライブラリ:
Deep Learning Toolbox /
Deep Neural Networks
説明
Stateful Predict ブロックは、ブロック パラメーターで指定された学習済み再帰型ニューラル ネットワークを使用して、入力におけるデータの応答を予測します。このブロックを使用すると、MAT ファイルまたは MATLAB® 関数から Simulink® モデルに事前学習済みのネットワークを読み込ませることができます。このブロックは、予測のたびにネットワークの状態を更新します。
再帰型ニューラル ネットワークの状態を初期状態にリセットするには、Stateful Predict ブロックを Resettable Subsystem (Simulink) ブロック内に配置し、トリガーとして制御信号 Reset を使用します。
例
Simulink でのネットワークの状態の予測と更新
この例では、Stateful Predict ブロックを使用して、学習済みの再帰型ニューラル ネットワークの応答を Simulink® で予測する方法を説明します。この例では、事前学習済みの長短期記憶 (LSTM) ネットワークを使用します。
制限
dlnetworkオブジェクトを使用する Stateful Predict ブロックでは、Intel® の MKL-DNN ライブラリを使用した CPU 高速化、および NVIDIA® の CuDNN ライブラリまたは TensorRT ライブラリを使用した GPU 高速化はサポートされていません。
端子
入力
Stateful Predict ブロックの入力端子は、読み込まれたネットワークの入力層の名前を取ります。予測ブロックへの入力には、読み込まれたネットワークに応じて、シーケンス データまたは時系列データを使用できます。
シーケンスが含まれる数値配列の次元は、データのタイプによって異なります。
| 入力 | 説明 |
|---|---|
| ベクトル シーケンス | s 行 c 列の行列。ここで、s はシーケンス長、c はシーケンスの特徴の数です。 |
| 2 次元イメージ シーケンス | h x w x c x s の配列。ここで、h、w、および c は、それぞれイメージの高さ、幅、およびチャネル数に対応します。s はシーケンス長です。 |
出力
Stateful Predict ブロックの出力端子は、読み込まれたネットワークの出力層の名前を取ります。Stateful Predict の出力は、読み込まれたネットワークに応じて、予測スコアまたは応答を表すことができます。
sequence-to-label 分類の場合、出力は K 行 N 列の行列になります。ここで、K はクラスの数、N は観測値の数です。
sequence-to-sequence 分類問題の場合、出力は K 行 S 列のスコア行列になります。ここで、K はクラスの数、S は対応する入力シーケンスに含まれるタイム ステップの総数です。
パラメーター
学習済み再帰型ニューラル ネットワークのソースを指定します。この学習済みネットワークには、少なくとも 1 つの再帰層 (LSTM ネットワークなど) を含めなければなりません。次のいずれかを選択します。
MAT ファイルからのネットワーク—dlnetworkオブジェクトを含む MAT ファイルから学習済みの再帰型ニューラル ネットワークをインポートします。MATLAB 関数からのネットワーク— MATLAB 関数から事前学習済みの再帰型ニューラル ネットワークをインポートします。
プログラムでの使用
ブロック パラメーター: Network |
| 型: 文字ベクトル、string |
値: 'Network from MAT-file' | 'Network from MATLAB function' |
既定の設定: 'Network from MAT-file' |
このパラメーターは、読み込もうとしている学習済み再帰型ニューラル ネットワークを含む MAT ファイルの名前を指定します。ファイルが MATLAB のパス上にない場合は、[参照] ボタンを使用してファイルを探します。
依存関係
このパラメーターを有効にするには、[ネットワーク] パラメーターを [MAT ファイルからのネットワーク] に設定します。
プログラムでの使用
ブロック パラメーター: NetworkFilePath |
| 型: 文字ベクトル、string |
| 値: MAT ファイルのパスまたは名前 |
既定の設定: 'untitled.mat'
|
このパラメーターは、事前学習済みの再帰型ニューラル ネットワークに関する MATLAB 関数の名前を指定します。
依存関係
このパラメーターを有効にするには、[ネットワーク] パラメーターを [MATLAB 関数からのネットワーク] に設定します。
プログラムでの使用
ブロック パラメーター: NetworkFunction |
| 型: 文字ベクトル、string |
| 値: MATLAB 関数名 |
既定の設定: 'untitled' |
[サンプル時間] パラメーターは、シミュレーション中にブロックが新しい出力値をいつ計算するかを指定します。詳細については、サンプル時間の指定 (Simulink)を参照してください。
出力に時間オフセットをもたせない場合は、[サンプル時間] パラメーターをスカラーとして指定します。出力に時間オフセットを追加するには、[サンプル時間] パラメーターを 1 行 2 列のベクトルとして指定します。ここで、最初の要素はサンプリング周期で、2 番目の要素はオフセットです。
既定では、[サンプル時間] パラメーターの値は -1 です (値を継承します)。
プログラムでの使用
ブロック パラメーター: SampleTime |
| 型: 文字ベクトル |
| 値: スカラー | ベクトル |
既定の設定: '-1' |
このパラメーターは、学習済みの dlnetwork に必要な入力データ形式を指定します。
データ形式。string スカラーまたは文字ベクトルとして指定します。文字列の各文字は、次のいずれかの次元ラベルでなければなりません。
"S"— 空間"C"— チャネル"B"— バッチ"T"— 時間"U"— 指定なし
たとえば、シーケンスのバッチを含み、1 番目、2 番目、および 3 番目の次元がそれぞれチャネル、観測値、およびタイム ステップに対応する配列の場合、"CBT" の形式で指定できます。
"S" または "U" のラベルが付いた次元については、複数回指定できます。ラベル "C"、"B"、および "T" はそれぞれ 1 回まで使用できます。ソフトウェアは、2 番目の次元の後ろにある大きさが 1 の "U" 次元を無視します。
詳細については、深層学習のデータ形式を参照してください。
既定では、このパラメーターはネットワークが必要とするデータ形式を使用します。
依存関係
このパラメーターを有効にするには、[ネットワーク] パラメーターを [MAT ファイルからのネットワーク] に設定して、学習済みの dlnetwork オブジェクトを MAT ファイルからインポートします。
プログラムでの使用
ブロック パラメーター: InputDataFormats |
| 型: 文字ベクトル、string |
値: 1 つ以上の入力をもつネットワークの場合は、{'inputlayerName1', 'SSC'; 'inputlayerName2', 'SSCB'; ...}' の形式の文字ベクトルを使用します。入力層がなく複数の入力端子をもつネットワークの場合は、'{'inputportName1/inport1, 'SSC'; 'inputportName2/inport2, 'SSCB'; ...}' の形式の文字ベクトルを使用します。 |
| 既定の設定: ネットワークが必要とするデータ形式。詳細については、深層学習のデータ形式を参照してください。 |
拡張機能
使用上の注意および制限:
サードパーティのライブラリに依存しない汎用の C コードを生成するには、[コンフィギュレーション パラメーター]、[コード生成] 全般カテゴリで、[言語] パラメーターを
[C]に設定します。C++ コードを生成するには、[コンフィギュレーション パラメーター]、[コード生成] 全般カテゴリで、[言語] パラメーターを
[C++]に設定します。コード生成用のターゲット ライブラリを指定するには、[コード生成]、[インターフェイス] カテゴリで、[ターゲット ライブラリ] パラメーターを設定します。このパラメーターを[なし]に設定すると、サードパーティのライブラリに依存しない汎用の C++ コードが生成されます。ERT ベースのターゲットの場合、[コード生成]、[インターフェイス] ペインの [サポート: 可変サイズの信号] パラメーターを有効にしなければなりません。
コード生成でサポートされているネットワークと層の一覧については、コード生成でサポートされているネットワークとレイヤー (MATLAB Coder)を参照してください。
使用上の注意および制限:
[コンフィギュレーション パラメーター]、[コード生成] 全般カテゴリの [言語] パラメーターを
[C++]に設定しなければなりません。GPU コード生成は、cuDNN ライブラリをターゲットとする場合のみ、このブロックをサポートします。
バージョン履歴
R2021a で導入R2024a 以降、SeriesNetwork オブジェクトおよび DAGNetwork オブジェクトは非推奨となりました。この推奨により、SeriesNetwork および DAGNetwork の Stateful Predict ブロックへの入力も非推奨となります。代わりに、dlnetwork オブジェクトを使用してください。dlnetwork オブジェクトには次の利点があります。
dlnetworkオブジェクトは、ネットワークの構築、予測、組み込み学習、可視化、圧縮、検証、およびカスタム学習ループをサポートする統合されたデータ型です。dlnetworkオブジェクトは、ユーザーが作成したり外部のプラットフォームからインポートしたりできる、さまざまなネットワーク アーキテクチャをサポートしています。関数
trainnetはdlnetworkオブジェクトをサポートしているため、損失関数を簡単に指定できます。組み込みの損失関数を選択するか、カスタム損失関数を指定できます。dlnetworkオブジェクトを使用した学習と予測は、通常、LayerGraphとtrainNetworkを使用したワークフローよりも高速です。
dlnetwork オブジェクトをもつ Simulink ブロック モデルは動作が異なります。予測スコアは K 行 N 列の行列として返されます。ここで、K はクラスの数、N は観測値の数です。SeriesNetwork オブジェクトまたは DAGNetwork オブジェクトをもつ既存の Simulink ブロック モデルがある場合、代わりに、次の手順に従って dlnetwork オブジェクトを使用します。
関数
dag2dlnetworkを使用して、SeriesNetworkオブジェクトまたはDAGNetworkオブジェクトをdlnetworkに変換します。ブロックへの入力がベクトル シーケンスの場合、サイズが s 行 c 列となるように、transpose ブロックを使用して行列を転置します。ここで、s はシーケンス長、c はシーケンスの特徴の数です。
transpose ブロックを使用して、予測スコアを N 行 K 列の配列に転置します。ここで、N は観測値の数、K はクラスの数です。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
