Maison  >  Article  >  développement back-end  >  En quoi les LSTM avec état dans Keras diffèrent-ils des LSTM traditionnels, et quand dois-je utiliser chaque type ?

En quoi les LSTM avec état dans Keras diffèrent-ils des LSTM traditionnels, et quand dois-je utiliser chaque type ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 04:17:02339parcourir

How do Stateful LSTMs in Keras differ from traditional LSTMs, and when should I use each type?

Comprendre les mémoires à long terme et à court terme de Keras (LSTM)

Remodelage et état

Remodelage des données :

L'opération de remodelage est nécessaire pour se conformer au format d'entrée attendu de Keras pour les LSTM, qui est [échantillons, pas de temps, fonctionnalités]. Dans ce cas, les échantillons représentent le nombre de séquences dans votre ensemble de données, les pas de temps indiquent la longueur de chaque séquence et les caractéristiques font référence au nombre de variables d'entrée pour chaque pas de temps. En remodelant les données, vous vous assurez que le LSTM peut traiter correctement les informations de séquence.

LSTM avec état :

Les LSTM avec état conservent leur état interne sur plusieurs lots pendant la formation. Cela leur permet de « se souvenir » des informations de séquence vues jusqu’à présent. Dans l'exemple fourni, batch_size est défini sur 1 et la mémoire est réinitialisée entre les exécutions d'entraînement. Cela signifie que le LSTM n’utilise pas pleinement ses capacités avec état. Pour profiter de l'état, vous utiliserez généralement une taille de lot supérieure à 1 et éviterez de réinitialiser les états entre les lots. Cela permet au LSTM d'apprendre les dépendances à long terme sur plusieurs séquences.

Pas de temps et fonctionnalités

Pas de temps :

Le nombre de pas de temps indique la longueur de chaque séquence de votre ensemble de données. Dans l'image que vous avez partagée, vous envisagez le cas plusieurs-à-un, dans lequel une séquence de longueur variable est condensée en une seule sortie. Le nombre de cases roses correspond au nombre de pas de temps dans la séquence d'entrée.

Caractéristiques :

Le nombre de fonctionnalités fait référence au nombre de variables d'entrée pour chacune pas de temps. Dans les séries multivariées, telles que la modélisation simultanée de plusieurs valeurs financières, vous auriez plusieurs caractéristiques pour chaque pas de temps, représentant différentes variables prédites.

Comportement LSTM avec état

Dans le diagramme, les cases rouges représentent les états cachés et les cases vertes représentent les états des cellules. Bien qu’ils soient visuellement égaux, ce sont des éléments distincts dans un LSTM. Le comportement avec état du LSTM signifie que ces états sont reportés aux pas de temps et aux lots suivants. Cependant, il est important de noter que la réinitialisation des états entre les exécutions d'entraînement dans l'exemple empêche un véritable état.

Réalisation de différentes configurations LSTM

Plusieurs à plusieurs avec des couches uniques :

Pour réaliser un traitement plusieurs-à-plusieurs avec une seule couche LSTM, utilisez return_sequences=True. Cela garantit que la forme de sortie inclut la dimension temporelle, permettant plusieurs sorties par séquence.

Plusieurs-à-un avec des couches simples :

Pour le traitement plusieurs-à-un, définissez return_sequences=False. Cela demande à la couche LSTM de générer uniquement le pas de temps final, supprimant ainsi les informations de séquence antérieures.

Un à plusieurs avec vecteur de répétition :

Pour créer Dans une configuration un-à-plusieurs, vous pouvez utiliser la couche RepeatVector pour répliquer l'entrée en plusieurs pas de temps. Cela vous permet d'alimenter une seule observation dans une couche LSTM et d'obtenir plusieurs sorties.

Un à plusieurs avec les LSTM avec état :

Une approche plus complexe pour atteindre le traitement un-à-plusieurs implique l’utilisation de stateful=True. En parcourant manuellement la séquence et en transmettant la sortie de chaque pas de temps comme entrée du suivant, vous pouvez générer une série de sorties en alimentant en une seule étape. Ceci est souvent utilisé pour les tâches de génération de séquences.

Configurations complexes :

Les LSTM peuvent être empilés dans diverses configurations pour créer des architectures complexes. Par exemple, un encodeur automatique pourrait combiner un encodeur plusieurs-à-un avec un décodeur un-vers-plusieurs, permettant au modèle d'apprendre à la fois l'encodage et le décodage des séquences.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn