Estoy tratando de usar el ejemplo descrito en la documentación de Keras llamada "Stacked LSTM para la clasificación de secuencia" (vea el código a continuación) y no puedo descifrar el input_shape
parámetro en el contexto de mis datos.
Tengo como entrada una matriz de secuencias de 25 posibles caracteres codificados en enteros a una secuencia acolchada de longitud máxima 31. Como resultado, mi x_train
tiene el (1085420, 31)
significado de la 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))
En este código x_train
tiene la forma (1000, 8, 16)
, como para una matriz de 1000 matrices de 8 matrices de 16 elementos. Allí me pierdo por completo en qué es qué y cómo mis datos pueden alcanzar esta forma.
Mirando el documento de Keras y varios tutoriales y preguntas y respuestas, parece que me falta algo obvio. ¿Alguien puede darme una pista de qué buscar?
Gracias por tu ayuda !
fuente
Sé que no es una respuesta directa a tu pregunta. Este es un ejemplo simplificado con solo una celda LSTM, que me ayuda a comprender la operación de remodelación de los datos de entrada.
Este sería un ejemplo de la red LSTM con solo una celda LSTM y con los datos de entrada de forma específica.
Como resultado, solo estamos prediciendo aquí, la capacitación no está presente por simplicidad, pero mira cómo necesitábamos remodelar los datos (para agregar una dimensión adicional) antes del
predict
método.fuente