Судя по документам относительно формы ввода ячеек LSTM:
3D-тензор с формой (batch_size, timesteps, input_dim).
Это означает, что вам понадобятся временные шаги с постоянным размером для каждой партии, следовательно, для обучения и тестирования будет невозможно иметь разные размеры пакетов.
Однако вы можете изменить длину входной последовательности, например, с помощью pad_sequences
(см. https://keras.io/preprocessing/sequence/#pad_sequence для получения более подробной информации)
Пример:
from keras.preprocessing.sequence import pad_sequences
# define sequences
sequences = [
[1, 2, 3, 4],
[1, 2, 3],
[1]
]
# pad sequence
padded = pad_sequences(sequences, maxlen=5)
print(padded)
[[0 1 2 3 4]
[0 0 1 2 3]
[0 0 0 0 1]]
РЕДАКТИРОВАТЬ после комментариев:
вам нужно настроить размеры тестовых данных. Например, см. Документы по последовательным моделям (https://keras.io/getting-started/sequential-model-guide/). Здесь x_train и y_train определены следующим образом:
data_dim = 16
timesteps = 8
num_classes = 10
batch_size = 32
# Generate dummy training data
x_train = np.random.random((batch_size * 10, timesteps, data_dim))
y_train = np.random.random((batch_size * 10, num_classes))
обратите внимание, что фигуры
x_train.shape
>> (320, 8, 16)
y_train.shape
>> (320, 10)
Ваши фигуры должны читать:
input_one_hot_encoded.shape
>> (300, timesteps, data_dim)
output_one_hot_encoded.shape
>>(300, num_classes)
соответственно