Несколько последовательностей с динамическими нейронными сетями

Бывают случаи, когда данные timeseries доступны не в одной длинной последовательности, а скорее как несколько более коротких последовательностей. При работе со статическими сетями и параллельными пакетами статических данных можно просто добавить наборы данных вместе, чтобы сформировать один большой параллельный пакет. Однако обычно вы не хотите добавлять временные последовательности вместе, поскольку это вызовет разрыв последовательности. В этих случаях можно создать параллельный набор последовательностей, как описано в разделе «Понимание структур данных мелкосетевых сетей».

При обучении сети с параллельным набором последовательностей необходимо, чтобы каждая последовательность была одинаковой длины. Если это не так, то более короткие входы и цели последовательности должны быть заполнены NaNs, порядок сделать все последовательности одинаковой длиной. Целевые значения 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);