По умолчанию Dropout
создает случайный тензор нулей и единиц. Нет шаблона, нет привилегированной оси. Таким образом, вы не можете сказать, что конкретная вещь отбрасывается, просто случайные координаты в тензоре. (Ну, он отбрасывает функции, но разные функции для каждого шага и по-разному для каждого образца)
Вы можете, если хотите, использовать свойство noise_shape
, которое определит форму случайного тензора. Затем вы можете выбрать, хотите ли вы удалить шаги, функции или образцы, или, возможно, их комбинацию.
- Шаг времени падения:
noise_shape = (1,steps,1)
- Особенности сброса:
noise_shape = (1,1, features)
- Образцы сброса:
noise_shape = (None, 1, 1)
Тамтакже слой SpatialDropout1D
, который использует noise_shape = (input_shape[0], 1, input_shape[2])
автоматически. Это исключает одну и ту же функцию для всех временных шагов, но обрабатывает каждый образец индивидуально (каждый образец отбрасывает свою группу функций).
После LSTM
у вас есть shape = (None, 10)
. Таким образом, вы используете Dropout
так же, как и в любой полностью подключенной сети. Он отбрасывает различные группы функций для каждого образца.
Выпадение в качестве аргумента LSTM
имеет много различий. Он генерирует 4 разные маски выпадения, для создания разных входов для каждого из разных ворот. (Вы можете увидеть код LSTMCell , чтобы проверить это).
Кроме того, есть опция recurrent_dropout
, которая будет генерировать 4 маски выпадения, но должна применяться к состояниям вместо входов, каждый шаг повторяющихся вычислений.