Обучите LSTM с индивидуальной подкладкой в ​​каждом размере партии - PullRequest
0 голосов
/ 30 сентября 2019

Я тренирую RNN для классификации текста. Я хочу тренировать модель с размером партии X. Однако для каждой партии я хочу создать заполнение нулями, где word_padding_length = maximum string length in each batch - current_word_length. Я пробовал поиск, но не смог найти ничего, связанного с этим. Это должно происходить во время подгонки модели.

1 Ответ

1 голос
/ 30 сентября 2019

Вы не можете изменить форму входного тензора во время тренировочного процесса. В вашем случае вы хотите иметь:
(batch_size, len1, num_features) -> (batch_size, len2, num_features) для каждого шага.

У вас может быть что-то похожее на это:

from keras.models import Model
from keras.layers import Input, LSTM

x = Input(shape=(None,128))
hidden = LSTM(32)(x)
model = Model(x, hidden)

for batch in batch_lst:
     model.train_on_batch(batch)

Отмечено, что Input имеет форму ( Нет , 128), что означает переменная batch_size, переменная time_steps и фиксированное значение num_feature = 128

Более того, вы можете рассмотреть возможность использования маскирующего слоя , чтобы игнорировать все ваши значения заполнения, чтобы вы могли иметь один тензорный ввод для всей тренировкиустанавливается, пока на производительность модели не влияет заполнение.

...