Существуют ли общие рекомендации о том, где размещать выпадающие слои в нейронной сети?
neural-networks
dropout
Франк Дернонкур
источник
источник
Ответы:
В оригинальной статье, в которой предлагались выпадающие слои, Хинтон (2012) , выпадение (с p = 0,5) использовалось на каждом из полностью связанных (плотных) слоев перед выходом; это не использовалось на сверточных слоях. Это стало наиболее часто используемой конфигурацией.
Более поздние исследования показали некоторую ценность в применении выпадения также к сверточным слоям, хотя и на гораздо более низких уровнях: р = 0,1 или 0,2. Выпадение использовалось после функции активации каждого сверточного слоя: CONV-> RELU-> DROP.
источник
relu
активацией, за которой следует слой максимального пула, должен ли (2D) выпадающий слой идти сразу после свертки или после слоя максимального пула, или и того, и другого, или это не имеет значения?RELU
каждого слоя CONV. Я не верю, что они исследовали эффект добавления отсева после максимального объединения пулов.Перед каждой линейной проекцией. См. Шривастава и соавт. (2014) .
источник
В оригинальной работе предлагались выпадающие слои, которые использовались на каждом из полностью связанных (плотных) слоев перед выводом; это не использовалось на сверточных слоях.
Мы не должны использовать выпадающий слой после сверточного слоя, поскольку, перемещая фильтр по ширине и высоте входного изображения, мы создаем двухмерную карту активации, которая дает отклики этого фильтра в каждой пространственной позиции. Так как выпадающий слой нейтрализует (обнуляет) случайные нейроны, есть шансы потерять очень важную функцию в изображении в нашем тренировочном процессе.
источник
Если я не ошибаюсь, вы можете добавить его после нелинейности каждой ячейки:
Первая строка - это функция активации, а последняя добавляет выпадение к результату. Пожалуйста, обратитесь к этому блогу . Надеюсь это поможет.
Или вы можете поместить его во входное вложение, как в следующем фрагменте:
Источник: https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation.ipynb
Технически вы можете добавить выпадающий слой в конце блока, например, после свертки или после кодирования RNN.
источник