Как визуализировать промежуточные слои объектов в керасе?
Я прочитал статью " Визуализация и понимание сверточных сетей" Зейлера и Фергуса и хотел бы использовать их технику визуализации. Документ звучит многообещающе, но, к сожалению, я не знаю, как реализовать его в Keras (версия 1.2.2).
Два вопроса:
Керас только обеспечивает
Deconvolution2D
Слой но нетUnpooling
и нет слоя "обратный ReLU". Как я могу использовать эти переменные переключателя, упомянутые в статье, для реализации разворота? Как мне использовать обратный ReLU (или это просто "нормальный"ReLU
)?Keras
Deconvolution2D
слой имеет атрибутыactivation
а такжеsubsample
, Может быть, это ключ к решению моей проблемы?! Если да, мне придется заменить все мои комбинации слоевConvolution2D
+Activation
+Pooling
с однимDeconvolution2D
Слой, верно?
Я ценю вашу помощь!
1 ответ
Авторы цитируемой вами статьи (насколько я помню) кратко рассказывают о том, как с этим справиться, а именно:
- РЕЛУ. Инверсия ReLU - это... ReLU. Поскольку свертка применяется к функции активации в прямом проходе, деконволюция должна применяться к выпрямленным реконструкциям в обратном проходе.
- Объединив. Строго говоря, нет способа инвертировать пул. Чтобы процитировать статью, "мы можем получить приблизительное обратное, записав местоположения максимумов в каждой области пула в наборе переменных-переключателей. В деконвнете операция по удалению использует эти переключатели для помещения реконструкций из уровня выше в соответствующие локации, сохраняющие структуру раздражителя. "
Теперь, ближе к реальной реализации и Keras, взгляните на этот поток - вы найдете там несколько примеров, которые вы можете использовать немедленно.