Main Content

動的ニューラル ネットワークでの複数シーケンス

時系列データを 1 つの長いシーケンスでは使用できず、複数の短いシーケンスとして使用できる場合があります。静的ネットワークと静的データの同時バッチを扱う場合、データセットどうしを単純につなげて、1 つの大きな同時バッチを形成できます。ただし、シーケンスの不連続の原因になるため、一般的に時間列を互いにつなげることはしません。このような場合、浅層ネットワークのデータ構造についてで説明されているように、一連の同時シーケンスを作成できます。

一連の同時シーケンスを使用してネットワークに学習させる場合、各シーケンスが同じ長さである必要があります。そうでない場合、短いシーケンスの入力とターゲットを NaN でパディングし、すべてのシーケンスを同じ長さにしなければなりません。NaN の値が割り当てられたターゲットは、ネットワーク性能の計算時に無視されます。

次のコードは、関数 catsamples を使用して、短いシーケンスをパディングしながら、複数のシーケンスを組み合わせて一連の同時シーケンスを形成する方法を示しています。

load magmulseq
y_mul = catsamples(y1,y2,y3,'pad');
u_mul = catsamples(u1,u2,u3,'pad');
d1 = [1:2];
d2 = [1:2];
narx_net = narxnet(d1,d2,10);
narx_net.divideFcn = '';
narx_net.trainParam.min_grad = 1e-10;
[p,Pi,Ai,t] = preparets(narx_net,u_mul,{},y_mul);
narx_net = train(narx_net,p,t,Pi);