Contenido principal

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Secuencias múltiples con redes neuronales dinámicas

En ocasiones, los datos de series de tiempo no están disponibles como una secuencia larga, sino como varias secuencias más cortas. Cuando se trabaja con redes estáticas y lotes concurrentes de datos estáticos, basta con añadir conjuntos de datos juntos para formar un lote concurrente más grande. Sin embargo, generalmente no conviene añadir secuencias de tiempo juntas porque ello provoca una discontinuidad en la secuencia. En estos casos, puede crear un conjunto concurrente de secuencias, como se describe en Understanding Shallow Network Data Structures.

Cuando se entrena una red con un conjunto concurrente de secuencias, cada secuencia debe tener la misma longitud. Si no es así, las entradas y las salidas de la secuencia más corta se deben rellenar con valores NaN para que todas las secuencias tengan la misma longitud. Los objetivos que tengan valores asignados de NaN se ignorarán durante el cálculo del rendimiento de la red.

El siguiente código ilustra el uso de la función catsamples para combinar varias secuencias juntas con el objetivo de formar un conjunto concurrente de secuencias y, al mismo tiempo, rellenar las secuencias más cortas.

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);