En Keras LSTM(n)signifie "créer une couche LSTM composée d'unités LSTM. L'image suivante montre ce que sont la couche et l'unité (ou neurone), et l'image la plus à droite montre la structure interne d'une seule unité LSTM.

L'image suivante montre comment fonctionne toute la couche LSTM.

Comme nous le savons, une couche LSTM traite une séquence, c'est-à-dire . À chaque étape la couche (chaque neurone) prend l'entrée , la sortie de l'étape précédente , et le biais , et un vecteur . Les coordonnées de sont des sorties des neurones / unités, et donc la taille du vecteur est égale au nombre d'unités / neurones. Ce processus se poursuit jusqu'à .X1, … ,XNtXtht - 1bhththtXN
Maintenant , nous allons calculer le nombre de paramètres pour LSTM(1)et LSTM(3)et le comparer avec ce que montre KERAS quand nous appelons model.summary().
Soit la taille du vecteur et la taille du vecteur (c'est aussi le nombre de neurones / unités). Chaque neurone / unité prend un vecteur d'entrée, une sortie de l'étape précédente et un biais qui crée paramètres d' (poids). Mais nous avons certain nombre de neurones et nous avons donc paramètres . Enfin, chaque unité a 4 poids (voir l'image la plus à droite, les cases jaunes) et nous avons la formule suivante pour le nombre de paramètres:
i n pXto u thti n p + o u t + 1o u to u t × ( i n p + o u t + 1 )
4 o u t ( i n p + o u t + 1 )
Comparons avec ce que Keras produit.
Exemple 1.
t1 = Input(shape=(1, 1))
t2 = LSTM(1)(t1)
model = Model(inputs=t1, outputs=t2)
print(model.summary())
Layer (type) Output Shape Param #
=================================================================
input_2 (InputLayer) (None, 1, 1) 0
_________________________________________________________________
lstm_2 (LSTM) (None, 1) 12
=================================================================
Total params: 12
Trainable params: 12
Non-trainable params: 0
_________________________________________________________________
Le nombre d'unités est 1, la taille du vecteur d'entrée est 1, donc .4 × 1 × ( 1 + 1 + 1 ) = 12
Exemple 2.
input_t = Input((4, 2))
output_t = LSTM(3)(input_t)
model = Model(inputs=input_t, outputs=output_t)
print(model.summary())
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_6 (InputLayer) (None, 4, 2) 0
_________________________________________________________________
lstm_6 (LSTM) (None, 3) 72
=================================================================
Total params: 72
Trainable params: 72
Non-trainable params: 0
Le nombre d'unités est 3, la taille du vecteur d'entrée est 2, donc4 × 3 × ( 2 + 3 + 1 ) = 72