Как визуализировать промежуточные слои объектов в керасе?

Я прочитал статью " Визуализация и понимание сверточных сетей" Зейлера и Фергуса и хотел бы использовать их технику визуализации. Документ звучит многообещающе, но, к сожалению, я не знаю, как реализовать его в Keras (версия 1.2.2).

Два вопроса:

  1. Керас только обеспечивает Deconvolution2D Слой но нет Unpooling и нет слоя "обратный ReLU". Как я могу использовать эти переменные переключателя, упомянутые в статье, для реализации разворота? Как мне использовать обратный ReLU (или это просто "нормальный" ReLU)?

  2. Keras Deconvolution2D слой имеет атрибуты activation а также subsample, Может быть, это ключ к решению моей проблемы?! Если да, мне придется заменить все мои комбинации слоев Convolution2D + Activation + Pooling с одним Deconvolution2D Слой, верно?

Я ценю вашу помощь!

1 ответ

Авторы цитируемой вами статьи (насколько я помню) кратко рассказывают о том, как с этим справиться, а именно:

  1. РЕЛУ. Инверсия ReLU - это... ReLU. Поскольку свертка применяется к функции активации в прямом проходе, деконволюция должна применяться к выпрямленным реконструкциям в обратном проходе.
  2. Объединив. Строго говоря, нет способа инвертировать пул. Чтобы процитировать статью, "мы можем получить приблизительное обратное, записав местоположения максимумов в каждой области пула в наборе переменных-переключателей. В деконвнете операция по удалению использует эти переключатели для помещения реконструкций из уровня выше в соответствующие локации, сохраняющие структуру раздражителя. "

Теперь, ближе к реальной реализации и Keras, взгляните на этот поток - вы найдете там несколько примеров, которые вы можете использовать немедленно.

Другие вопросы по тегам