Как мы можем обучить модели глубокого обучения для ввода любой длины? - PullRequest
1 голос
/ 24 мая 2019

Я создал модель глубокого обучения, используя керас. Я тренирую модель по комментариям разной длины. Я предварительно обработал входные данные и дополнил их до равной длины. При прогнозировании, если я дам вход, длина которого больше длины моих тренировочных входов, модель не пройдёт. Что я должен делать? Пожалуйста, поделитесь некоторыми примерами, которые будут действительно полезны.

latent_dim = 1024
inpt = Input(shape=(max_len,))  ### max_len is the final length
emb_layer = Embedding(vocabulary_size, 100, weights=[embedding_matrix], trainable = False)(inpt)
bdlstm1 = Bidirectional(LSTM(64, return_sequences = True))(emb_layer)
dns2 = Dense(no_labels, activation='softmax')(bdlstm1)
model = Model(inpt, dns2)
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x,y)

Ответы [ 3 ]

0 голосов
/ 24 мая 2019

Теоретически ограничение дается полностью подключенным слоем / слоями в конце глубокой сети, причем все его единицы нуждаются в подаче.

Из-за этого ограничения мы должны зафиксировать длинуобычно априори (максимальное количество слов в НЛП).Как я видел в вашем коде, вы используете слой встраивания размером 100, поэтому для каждого предложения, которое не достигает минимального размера, необходимо добавить 100 нулей для каждого пропущенного слова.

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

if max_len < len(sentence.split()):
    # add zero padding until reach max_len
else:
    inputSentence = " ".join(sentence.split()[:max_len]) # no. words = max_len 
0 голосов
/ 24 мая 2019

вы использовали LSTM, что является разновидностью RNN и требует максимальных временных шагов, поэтому вы должны ограничить верхнюю границу текста.

если новый ввод длиннее max_len

  • обрезать до max_len
  • или используйте скользящее окно и сделайте прогноз для каждого из них и используйте среднее из них
0 голосов
/ 24 мая 2019

Я думаю, что вы найдете здесь удовлетворительный ответ:

https://ai.stackexchange.com/questions/2008/how-can-neural-networks-deal-with-varying-input-sizes

Лучший (и единственный простой) способ - использовать RNN.

Хорошоудачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...