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

Существуют времена, когда данные 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);