主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

predictAndUpdateState

学習済み再帰型ニューラルネットワークを使用した応答の予測およびネットワークの状態の更新

説明

1つのCPUまたは1つのGPUで学習済み深層学習ネットワークを使用して予測を実行できます。GPUを使用するには,并行计算工具箱™および以3.0计算能力上のCUDA®対応英伟达®GPUが必要です。名前と値のペアの引数“ExecutionEnvironment”を使用してハードウェア要件を指定します。

updatedNetYPred) = predictAndUpdateState (recNet序列は,学習済み再帰型ニューラルネットワークrecNetを使用して序列のデータの応答を予測し,ネットワークの状態を更新します。

この関数は,再帰型ニューラルネットワークのみをサポートしています。入力recNetには少なくとも1つの再帰層を含めなければなりません。

updatedNetYPred) = predictAndUpdateState (___名称,值は,前の構文のいずれかの引数と,1つ以上のペアの引数名称,值によって指定された追加オプションを使用します。たとえば,“MiniBatchSize”,27はサイズ27のミニバッチを使用して予測を実行します。

ヒント

長さが異なるシーケンスで予測を行うと,ミニバッチのサイズが,入力データに追加されるパディングの量に影響し,異なる予測値が得られることがあります。さまざまな値を使用して,ネットワークに最適なものを確認してください。ミニバッチのサイズとパディングのオプションを指定するには,“MiniBatchSize”および“SequenceLength”オプションをそれぞれ使用します。

すべて折りたたむ

学習済み再帰型ニューラルネットワークを使用して応答を予測し,ネットワークの状態を更新します。

[1]および[2]で説明されているように日本元音データセットで学習させた事前学習済みの長短期記憶(LSTM)ネットワークJapaneseVowelsNetを読み込みます。このネットワークは,ミニバッチのサイズ27を使用して,シーケンス長で並べ替えられたシーケンスで学習させています。

负载JapaneseVowelsNet

ネットワークアーキテクチャを表示します。

网。层
ans x1 = 5层阵列层:1“sequenceinput”序列输入序列输入12维度2的lstm lstm lstm 100隐藏单位3 fc的完全连接9完全连接层4的softmax softmax softmax 5 classoutput的分类输出crossentropyex ' 1 ', 8其他类

テストデータを読み込みます。

[XTest,欧美]= japaneseVowelsTestData;

シーケンスのタイムステップについてループします。各タイムステップのスコアを予測し,ネットワークの状態を更新します。

X = XTest {94};numTimeSteps =大小(X, 2);i = 1:numTimeSteps v = X(:,i);(净,分数)= predictAndUpdateState(净,v);分数(:,i) =分数;结束

予測スコアをプロットします。このプロットは,タイムステップ間で予測スコアがどのように変化するかを示します。

一会=字符串(net.Layers(结束). class);Figure lines = plot(scores');传说numTimeSteps xlim ([1]) (“类”+类名,“位置”“西北”)包含(“时间步”) ylabel (“分数”)标题(“预测分数随时间的变化”

正しいクラスのタイムステップ全体にわたる予測スコアを強調表示します。

trueLabel =欧美(94)
trueLabel =分类3.
行(trueLabel)。线宽= 3;

最終タイムステップの予測を棒グラフに表示します。

图酒吧(分数)标题(“最终预测评分”)包含(“类”) ylabel (“分数”

入力引数

すべて折りたたむ

学習済み再帰型ニューラルネットワーク。SeriesNetworkまたはDAGNetworkオブジェクトとして指定します。事前学習済みのネットワークをインポートするか,関数trainNetworkを使用して独自のネットワークに学習させることによって,学習済みネットワークを取得できます。

recNetは再帰型ニューラルネットワークです。これには少なくとも1つの再帰層(LSTMネットワークなど)を含めなければなりません。

シーケンスデータまたは時系列データ。数値配列の N 行 1 列の cell 配列、1 つのシーケンスを表す数値配列、またはデータストアとして指定します。ここで、N は観測値の数です。

细胞配列入力または数値配列入力の場合,シーケンスが含まれる数値配列の次元は,データのタイプによって異なります。

入力 説明
ベクトルシーケンス c行s列の行列。ここでcはシーケンスの特徴の数,年代はシーケンス長です。
2次元イメージシーケンス h x w x c sの配列。ここでh, w,およびcはそれぞれイメージの高さ,幅,およびチャネル数に対応します。年代はシーケンス長です。
3次元イメージシーケンス H x w x d x c x s。ここでh, w, d,およびcはそれぞれ3次元イメージの高さ,幅,深さ,およびチャネル数に対応します。年代はシーケンス長です。

データストア入力の場合,データストアはシーケンスの细胞配列,または最初の列にシーケンスが含まれる表としてデータを返さなければなりません。シーケンスデータの次元は,上記の表に対応していなければなりません。

名前と値のペアの引数

オプションの引数名称,值のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。Name1, Value1,…,的家のように,複数の名前と値のペアの引数を,任意の順番で指定できます。

例:[updatedNet, YPred] = predictAndUpdateState(recNet,C,'MiniBatchSize',27)は,サイズ27のミニバッチを使用して予測を実行します。

予測に使用するミニバッチのサイズ。正の整数として指定します。ミニバッチのサイズが大きくなるとより多くのメモリが必要になりますが、予測時間が短縮される可能性があります。

長さが異なるシーケンスで予測を行うと,ミニバッチのサイズが,入力データに追加されるパディングの量に影響し,異なる予測値が得られることがあります。さまざまな値を使用して,ネットワークに最適なものを確認してください。ミニバッチのサイズとパディングのオプションを指定するには,“MiniBatchSize”および“SequenceLength”オプションをそれぞれ使用します。

例:“MiniBatchSize”,256年

パフォーマンスの最適化。“加速”と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • “汽车”——入力ネットワークとハードウェアリソースに適した最適化の回数を自動的に適用します。

  • “没有”——すべての高速化を無効にします。

既定のオプションは“汽车”です。

“加速”オプション“汽车”を使用すると,パフォーマンス上のメリットが得られますが,初期実行時間が長くなります。互換性のあるパラメーターを使用した後続の呼び出しは,より高速になります。新しい入力データを使用して関数を複数回呼び出す場合は,パフォーマンスの最適化を使用してください。

例:“加速”、“汽车”

ハードウェアリソース。“ExecutionEnvironment”と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • “汽车”——利用可能な場合はGPUを使用し,そうでない場合はCPUを使用します。

  • “图形”- - - - - - GPUを使用します。GPUを使用するには,并行计算工具箱および以3.0计算能力上のCUDA対応NVIDIA GPUが必要です。并行计算工具箱または適切なGPUが利用できない場合,エラーが返されます。

  • “cpu”——CPUを使用します。

例:“ExecutionEnvironment”、“cpu的

入力シーケンスのパディング,切り捨て,または分割を行うオプション。次のいずれかに指定します。

  • “最长”——各ミニバッチで,最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが,パディングによってネットワークにノイズが生じることがあります。

  • “最短”——各ミニバッチで,最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用するとパディングは追加されませんが,データが破棄されます。

  • 正の整数——各ミニバッチで,ミニバッチで最長のシーケンスより大きい,指定長の最も近い倍数になるようにシーケンスのパディングを行った後,それらのシーケンスを指定長のより小さなシーケンスに分割します。分割が発生すると,追加のミニバッチが作成されます。シーケンス全体がメモリに収まらない場合は,このオプションを使用します。または,“MiniBatchSize”オプションをより小さい値に設定して,ミニバッチごとのシーケンス数を減らしてみます。

入力シーケンスのパディング,切り捨て,および分割の効果の詳細は,シーケンスのパディング,切り捨て,および分割を参照してください。

例:“SequenceLength”、“最短的

パディングまたは切り捨ての方向。次のいずれかに指定します。

  • “对”——シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイムステップで始まり,シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。

  • “左”——シーケンスの左側に対してパディングまたは切り捨てを行います。シーケンスが同じタイムステップで終わるように,シーケンスの先頭に対して切り捨てまたはパディングの追加が行われます。

LSTM層は1タイムステップずつシーケンスデータを処理するため,層のOutputModeプロパティが“最后一次”の場合,最後のタイムステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンスデータの左側に対してパディングまたは切り捨てを行うには,“SequencePaddingDirection”オプションを“左”に設定します。

sequence-to-sequenceネットワークの場合(各LSTM層についてOutputModeプロパティが“序列”である場合),最初のタイムステップでパティングを行うと,それ以前のタイムステップの予測に悪影響を与える可能性があります。シーケンスの右側に対してパディングまたは切り捨てを行うには,“SequencePaddingDirection”オプションを“对”に設定します。

入力シーケンスのパディング,切り捨て,および分割の効果の詳細は,シーケンスのパディング,切り捨て,および分割を参照してください。

入力シーケンスをパディングする値。スカラーとして指定します。このオプションは,SequenceLength“最长”または正の整数の場合にのみ有効です。ネットワーク全体にエラーが伝播される可能性があるため,でシーケンスをパディングしないでください。

例:“SequencePaddingValue”,1

出力引数

すべて折りたたむ

更新されたネットワーク。updatedNetは入力ネットワークと同じタイプのネットワークです。

予測スコアまたは応答。行,列または行列の细胞配列として返されます。YPredの形式は,問題のタイプによって異なります。

次の表は,分類問題の形式について説明しています。

タスク 形式
sequence-to-label分類 N行K列の行列。Nは観測値の数Kはクラスの数です。
sequence-to-sequence分類

行列のN行1列の细胞配列。Nは観測値の数です。シーケンスはK行の行列で,Kはクラスの数です。SequenceLengthオプションを各ミニバッチに個別に適用した後,各シーケンスには,対応する入力シーケンスと同じ数のタイムステップが含まれています。

観測値が1つのsequence-to-sequence分類問題では,序列を行列にすることができます。この場合,YPredは,スコアのK行年代列の行列です。Kはクラスの数Sは対応する入力シーケンスのタイムステップの総数です。

次の表は,回帰問題の形式について説明しています。

タスク 形式
sequence-to-one回帰 N行R列の行列。Nは観測値の数,Rは応答の数です。
sequence-to-sequence回帰

数値シーケンスのN行1列の细胞配列。Nは観測値の数です。シーケンスはR行の行列で,Rは応答の数です。SequenceLengthオプションを各ミニバッチに個別に適用した後,各シーケンスには,対応する入力シーケンスと同じ数のタイムステップが含まれています。

観測値が1つのsequence-to-sequence問題では,序列を行列にすることができます。この場合,YPredは応答の行列です。

アルゴリズム

深度学习工具箱™に含まれる深層学習における学習,予測,検証用のすべての関数は,単精度浮動小数点演算を使用して計算を実行します。深層学習用の関数にはtrainNetwork预测分类激活などがあります。CPUとGPUの両方を使用してネットワークに学習させる場合,単精度演算が使用されます。

参照

工藤、富山、新保。“使用通过区域的多维曲线分类”。模式识别字母。第20卷,第11-13期,第1103-1111页。

[2] UCI机器学习知识库:日语元音数据集。https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

拡張機能

R2017bで導入