J'essaie d'utiliser l'exemple décrit dans la documentation Keras nommée "LSTM empilé pour la classification de séquence" (voir le code ci-dessous) et input_shape
je ne peux pas comprendre le paramètre dans le contexte de mes données.
J'ai en entrée une matrice de séquences de 25 caractères possibles encodés en nombres entiers pour une séquence matelassée de longueur maximale 31. Par conséquent, ma x_train
a la (1085420, 31)
signification de la forme (n_observations, sequence_length)
.
from keras.models import Sequential
from keras.layers import LSTM, Dense
import numpy as np
data_dim = 16
timesteps = 8
num_classes = 10
# expected input data shape: (batch_size, timesteps, data_dim)
model = Sequential()
model.add(LSTM(32, return_sequences=True,
input_shape=(timesteps, data_dim))) # returns a sequence of vectors of dimension 32
model.add(LSTM(32, return_sequences=True)) # returns a sequence of vectors of dimension 32
model.add(LSTM(32)) # return a single vector of dimension 32
model.add(Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
# Generate dummy training data
x_train = np.random.random((1000, timesteps, data_dim))
y_train = np.random.random((1000, num_classes))
# Generate dummy validation data
x_val = np.random.random((100, timesteps, data_dim))
y_val = np.random.random((100, num_classes))
model.fit(x_train, y_train,
batch_size=64, epochs=5,
validation_data=(x_val, y_val))
Dans ce code x_train
a la forme (1000, 8, 16)
, comme pour un tableau de 1000 tableaux de 8 tableaux de 16 éléments. Là, je suis complètement perdu sur ce qui est quoi et comment mes données peuvent atteindre cette forme.
En regardant le document Keras et divers didacticiels et questions / réponses, il semble que je manque quelque chose d'évident. Quelqu'un peut-il me donner une idée de ce qu'il faut rechercher?
Merci de votre aide !
la source
Je sais que ce n'est pas une réponse directe à votre question. Il s'agit d'un exemple simplifié avec une seule cellule LSTM, qui m'aide à comprendre l'opération de remodelage des données d'entrée.
Ce serait un exemple du réseau LSTM avec juste une seule cellule LSTM et avec les données d'entrée de forme spécifique.
En fait, nous prédisons juste ici, la formation n'est pas présente pour plus de simplicité, mais regardez comment nous devions remodeler les données (pour ajouter une dimension supplémentaire) avant la
predict
méthode.la source