Próbuję użyć przykładu opisanego w dokumentacji Keras o nazwie „Stacked LSTM do klasyfikacji sekwencji” (patrz kod poniżej) i nie mogę znaleźć input_shape
parametru w kontekście moich danych.
Mam jako dane wejściowe macierz sekwencji 25 możliwych znaków zakodowanych w liczbach całkowitych do sekwencji wypełnionej o maksymalnej długości 31. W rezultacie moje x_train
ma (1085420, 31)
znaczenie kształtu (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))
W tym kodzie x_train
ma kształt (1000, 8, 16)
, jak dla tablicy 1000 tablic z 8 tablicami 16 elementów. Tam całkowicie się zagubiłem na temat tego, co i jak moje dane mogą osiągnąć ten kształt.
Patrząc na dokument Keras i różne samouczki oraz pytania i odpowiedzi, wydaje mi się, że brakuje mi czegoś oczywistego. Czy ktoś może mi podpowiedzieć, czego szukać?
Dzięki za pomoc !