Séquences multiples avec réseaux de neurones dynamiques
Il arrive que les données de séries temporelles ne soient pas disponibles sous la forme d'une séquence longue, mais plutôt sous la forme de plusieurs séquences plus courtes. Dans le cas de réseaux statiques et de batchs concurrents de données statiques, vous pouvez simplement combiner les jeux de données afin de former un grand batch concurrent. Toutefois, vous devrez généralement vous abstenir de combiner des séquences temporelles afin d’éviter une discontinuité dans la séquence. Dans ces cas, vous pouvez créer un jeu concurrent de séquences, comme le décrit Comprendre les structures de données des réseaux peu profonds.
Lors de l'apprentissage d'un réseau avec un ensemble concurrent de séquences, chaque séquence doit présenter la même longueur. Si tel n'est pas le cas, les entrées et cibles des séquences plus courtes doivent être remplies par des valeurs NaN afin que toutes les séquences présentent la même longueur. Les cibles auxquelles sont attribuées des valeurs NaN sont ignorées lors du calcul de la performance du réseau.
Le code suivant illustre l'utilisation de la fonction catsamples
pour combiner plusieurs séquences et ainsi former un jeu concurrent de séquences, tout en remplissant les séquences plus courtes.
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);