Я тренирую RNN по следующей задаче: учитывая последовательность из тридцати слов, а затем классифицирую последовательность в двоичный класс.
Есть ли преимущество в наличии более 30 ячеек (LSTM, GRU илиобычный рнн) в моей сети?Я видел много примеров в Интернете, где подобные сети обучаются с несколькими слоями, каждый из которых имеет 100 ячеек, но для меня это не имеет смысла.Как это помогает иметь больше ячеек, чем длина последовательности?(в моем случае это длина 30)
Я запутался, потому что, насколько я понимаю, каждая ячейка принимает два входа 1. Новый элемент последовательности 2. Выход из предыдущей ячейки Итак, после 30 ячеек, не будет новых элементов последовательности для ввода в ячейку.Каждая ячейка будет просто обрабатывать выходные данные предыдущей ячейки (не получая новой информации).
Я использую ячейки LSTM для этой задачи (однако, я предполагаю, что фактический тип используемой ячейки RNN не имеет значения).
Когда единицы измерения GRU совпадают с длиной моей последовательности
visible = Input(shape=(30,))
print(np.shape(visible ))
embed=Embedding(vocab_size,2)(visible)
print(np.shape(embed ))
x2=keras.layers.GRU(30, return_sequences=True)(embed)
print(np.shape(x2))
формы:
(?, 30)
(?, 30, 2)
(?, ?, 30)
Когда единицы измерения GRU не совпадают с длиной моей последовательности
visible = Input(shape=(30,))
print(np.shape(visible ))
embed=Embedding(vocab_size,2)(visible)
print(np.shape(embed ))
x2=keras.layers.GRU(250, return_sequences=True)(embed)
print(np.shape(x2))
формы:
(?, 30)
(?, 30, 2)
(?, ?, 250)
Как форма меняется с (?, 30, 2)
на (?, ?, 250)
или на (?, ?, 30)
даже?