主要内容

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

深層学習を使用したsequence-to-sequence分類

この例では,長短期記憶(LSTM)ネットワークを使用してシーケンスデータの各タイムステップを分類する方法を説明します。

シーケンスデータの各タイムステップを分類するよう深層ニューラルネットワークに学習させるために,“序列到序列LSTMネットワーク”を使使序。序列 - 序列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:);类=类别(YTrain {1});数字J = 1:numel(classes) label = class (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に設定します。

选择= trainingOptions (“亚当”...“MaxEpochs”现年60岁的...“GradientThreshold”2,...“详细”0,...“阴谋”“训练进步”);

trainNetworkを使用し,指定した学習オプションでLSTMネットワークに学習させます。各ミニバッチには学習セット全体が含まれているので,プロットはエポックごとに更新されます。シーケンスが非常に長いため,各ミニバッチの処理とプロットの更新に時間がかかる場合があります。

网= trainNetwork (XTrain、YTrain层,选择);

LSTMネットワークのテスト

テストデータを読み込み,タイムステップごとに行動を分類します。

行動のテストデータを読み込みます。XTestには3次元の単一シーケンスが含まれます。欧美には,各タイムステップでの行動に対応するカテゴリカルラベルのシーケンスが含まれます。

负载HumanActivityTest图绘制(XTest{1}”)包含(“时间步”)传说(“特性”+ (1: numFeatures))标题(“测试数据”

分类を使用してテストデータを分類します。

YPred =分类(网络,XTest {1});

または,classifyAndUpdateStateを使用して1タイムステップずつ予測できます。これは,タイムステップの値がストリームで到着する場合に役立ちます。通常1タイムステップずつ予測するよりも,シーケンス全体について予測する方が高速です。1つのタイムステップでの予測間にネットワークを更新して将来のタイムステップを予測する方法を示す例については,深層学習を使用した時系列予測を参照してください。

予測の精度を計算します。

acc = sum(YPred == YTest{1})./numel(YTest{1})
acc = 0.9998

プロットを使用して予測をテストデータと比較します。

图绘制(YPred,“。”)举行情节(欧美{1})包含(“时间步”) ylabel (“活动”)标题(“预测活动”)传说([“预测”“测试数据”])

参考

|||

関連するトピック