Да, вы можете указать входные данные переменной длины в кератах, а именно, указав input_shape=(None, features)
, где None
указывает неизвестно количество временных шагов.Вот пример модели:
in = Input(shape=(None, num_words)) # let's assume it is one-hot encoded words
latent = Masking()(in) # sentences in same batch need to same length, padded
latent = LSTM(latent_size)(latent) # skips masked timesteps
out = Dense(num_words, activation='softmax')
model = Model(in, out)
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
Важным моментом является то, что предложения в пакете должны быть дополнены для тензорных операций, но в действительности разные пакеты могут иметь разное количество временных шагов, что позволяет вашей модели обрабатывать предложения различной длины.