exponenta event banner

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

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

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