このペジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
深層学習を使用した序列到序列分類
この例では,長短期記憶(LSTM)ネットワークを使用してシーケンスデータの各タイムステップを分類する方法を説明します。
シーケンスデータの各タイムステップを分類するよう深層ニューラルネットワークに学習させるために,"sequence-to-sequence LSTMネットワク"を使用できます。sequence-to-sequence LSTMネットワークでは,シーケンスデータの個々のタイムステップで異なる予測を行うことができます。
この例では,体に装着したスマトフォンから得られたセンサデタを使用します。この例では3つの異なる方向での加速度計の測定値を表す時系列データを与えて,装着者の行動を認識するように,LSTMネットワークに学習させます。学習デタには,7人分の時系列デタが含まれています。各シケンスには3の特徴があり,長さはさまざまです。デタセットには6の学習観測値と1のテスト観測値が含まれています。
シケンスデタの読み込み
行動認識デタを読み込みます。このデータには,体に装着したスマートフォンから得られたセンサーデータの7つの時系列が含まれています。各シケンスには3の特徴があり,長さはさまざまです。3 . . 3 . .
负载HumanActivityTrainXTrain
XTrain =6×1单元格数组{3×64480 double} {3×53696 double} {3×56416 double} {3×50688 double} {3×51888 double} {3×54256 double}
1の学習シケンスをプロットで可視化します。最初の学習シケンスの最初の特徴をプロットし,対応する行動に応じてプロットに色を付けます。
X = XTrain{1}(1,:);class = categories(YTrain{1});数字为J = 1:numel(classes) label = classes(J);idx = find(YTrain{1} == label);持有在情节(idx X (idx))结束持有从包含(“时间步”) ylabel (“加速”)标题(“训练序列1,特色1”)传说(类,“位置”,“西北”)
LSTMネットワクアキテクチャの定義
LSTMネットワクアキテクチャを定義します。入力をサ3(入力デ)のシ。200個の隠れユニットを持LSTM層を指定して,シケンス全体を出力します。最後に,サイズが5の全結合層を含めることによって5個のクラスを指定し,その後にソフトマックス層と分類層を配置します。
numFeatures = 3;numHiddenUnits = 200;numClasses = 5;图层= [...sequenceInputLayer numFeatures lstmLayer (numHiddenUnits,“OutputMode”,“序列”) fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];
学習オプションを指定します。ソルバを“亚当”
に設定します。学習を60エポック行います。勾配の発散を防ぐために,勾配のしきい値を2に設定します。
options = trainingOptions(“亚当”,...“MaxEpochs”现年60岁的...“GradientThreshold”,2,...“详细”0,...“阴谋”,“训练进步”);
trainNetwork
を使用し、指定した学習オプションでLSTMネットワクに学習させます。各ミニバッチには学習セット全体が含まれているので,プロットはエポックごとに更新されます。シケンスが非常に長いため,各ミニバッチの処理とプロットの更新に時間がかかる場合があります。
net = trainNetwork(XTrain,YTrain,layers,options);
LSTMネットワクのテスト
テストデタを読み込み,タムステップごとに行動を分類します。
行動のテストデタを読み込みます。XTest
には3次元の単一シケンスが含まれます。欧美
には、各タ。
负载HumanActivityTest图(XTest{1}') xlabel(“时间步”)传说(“特性”+ (1:numFeatures))“测试数据”)
分类
を使用してテストデタを分類します。
YPred = category (net,XTest{1});
または,classifyAndUpdateState
を使用して1タ。これは、タ。通常,1タ。1つのタイムステップでの予測間にネットワークを更新して将来のタイムステップを予測する方法を示す例については,深層学習を使用した時系列予測を参照してください。
予測の精度を計算します。
acc = sum(YPred == YTest{1})./numel(YTest{1})
Acc = 0.9998
プロットを使用して予測をテストデタと比較します。
图绘制(YPred,“。”)举行在情节(欧美{1})从包含(“时间步”) ylabel (“活动”)标题(“预测活动”)传说([“预测”“测试数据”])
参考
trainNetwork
|trainingOptions
|lstmLayer
|sequenceInputLayer