Travaillez en toute flexibilité avec des réseaux récurrents
Wolfram Language fournit des couches récurrentes de haut niveau qui sont capables de traiter de manière transparente et efficace des lots d'entrées de différentes longueurs sans sacrifier les performances. De plus, des outils comme NetStateObject et NetFoldOperator permettent un accès facile à l'évaluation récurrente et à la définition de couches récurrentes personnalisées de haut niveau.
Tout d'abord, démontrez comment créer et utiliser une couche récurrente simple. Définissez une couche récurrente agissant sur des séquences de longueur variable de 2 vecteurs.
Évaluez la couche sur un lot de séquences de longueur variable.
Définissez un réseau qui prend des séquences de caractères de longueur variable et produit un nombre pour chaque séquence.
Évaluez la couche sur un lot de chaînes de caractères de longueur variable.
Les couches ou réseaux récurrents définis par NetChain ou NetGraph sont sans état par défaut. Leurs états internes initiaux sont des vecteurs de zéros et sont réinitialisés après chaque évaluation, de sorte que des évaluations répétées sur la même entrée donneront le même résultat.
Les couches récurrentes de réseaux peuvent être transformées en objets d'état avec NetStateObject. Un objet NetStateObject conserve ses propres états après une évaluation, de sorte que des évaluations répétées sur la même entrée produiront, en général, des résultats différents. Ceci permet de conserver l'état interne d'une couche récurrente et, par exemple, de générer du texte efficacement.
Démontrez maintenant comment créer une couche récurrente personnalisée à partir d'un NetGraph existant, en utilisant NetFoldOperator. Définissez l'unité centrale d'un LSTM multiplicatif.
Créez le LSTM multiplicatif.
Évaluez la couche avec un ensemble de séquences de différentes longueurs constituées de vecteurs de longueur 64.