Estou tentando usar o exemplo descrito na documentação do Keras chamada "LSTM empilhado para classificação de sequência" (consulte o código abaixo) e não consigo descobrir o input_shape
parâmetro no contexto dos meus dados.
Eu tenho como entrada uma matriz de sequências de 25 caracteres possíveis codificados em números inteiros para uma sequência acolchoada de comprimento máximo 31. Como resultado, my x_train
tem o (1085420, 31)
significado da 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))
Neste código x_train
tem a forma (1000, 8, 16)
, como para uma matriz de 1000 matrizes de 8 matrizes de 16 elementos. Lá me perco completamente sobre o que é o que e como meus dados podem atingir esse formato.
Olhando para o documento de Keras e vários tutoriais e perguntas e respostas, parece que estou perdendo algo óbvio. Alguém pode me dar uma dica do que procurar?
Obrigado pela ajuda !