Sto cercando di usare l'esempio descritto nella documentazione di Keras denominata "Stacked LSTM per la classificazione delle sequenze" (vedere il codice seguente) e non riesco a capire il input_shape
parametro nel contesto dei miei dati.
Ho come input una matrice di sequenze di 25 possibili caratteri codificati in numeri interi in una sequenza imbottita di lunghezza massima 31. Di conseguenza, my x_train
ha il (1085420, 31)
significato della forma (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))
In questo codice x_train
ha la forma (1000, 8, 16)
, come per un array di 1000 array di 8 array di 16 elementi. Lì mi perdo completamente su ciò che è cosa e come i miei dati possono raggiungere questa forma.
Guardando il documento di Keras e vari tutorial e domande e risposte, sembra che mi manchi qualcosa di ovvio. Qualcuno può darmi un suggerimento su cosa cercare?
Grazie per l'aiuto !